私のコードで読み取り専用モードでMySQLを実行した場合の影響を調べています。MySQL 5.5.49.0とPHP 5.5.9.1を組み合わせて実行しています(Ubuntu 14.04で)。読み取り専用データベースでPDO :: exec()が返されない
flush tables with read lock;
set global read_only = 1;
私はCLI経由で接続して、私が手に挿入しようとした場合::私はPDO経由で同じユーザーで接続した場合
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock
を:私は、読み取り専用にするには、次のコマンドを使用してデータベースを設定し
$pdo = new PDO('mysql:dbname=database;host=host', 'username', 'password', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
try {
$result = $pdo->exec('insert ***');
die(var_dump(__LINE__, $result));
} catch (Exception $e) {
die(var_dump(__LINE__, $e->getMessage()));
}
ブラウザは無限に読み込みを続けます。私は古いmysql_connectとmysql_queryを使ってsimular構造を試しましたが、その場合は読み取り専用の状況は無視され、0が返されます。また、実行可能な解決策ではありません。
通常、データベースが読み取り専用モードで実行されている場合は、先読みをチェックしません。これは通常そうではないため、要求ごとに余分なクエリを保存できます。
私の質問:どのように例外や警告を他の形式のMySQL/PDOから取得するのですか?
'PDOException'は' Exception'ではありません –
これは、ExceptionのインスタンスであるRuntimeExceptionのインスタンスであるため、実際には関係ありません。そしてそれらの実行さえも空白のページで止まっていたはずです。 – Timo