サーババージョン:5.7.17 MySQLコミュニティサーバ(GPL)テーブルの作成に失敗した場合、MySQLはトランザクションのコミットを行います
ここは私のケースです。 私は2つのテーブルを持っています。
CREATE TABLE a (id INT PRIMARY KEY);
CREATE TABLE b (id INT PRIMARY KEY);
は今、私は私の取引をやって:
もちろんSTART TRANSACTION;
INSERT INTO `a` VALUE (1);
CREATE TABLE b (id INT PRIMARY KEY);
私はテーブルが既に存在するため、その文3(CRATEのTABLE 'B')は失敗します期待しています。それはそうです。問題は、それはまた、同様に挿入しないことを、私はロールバックする方法はありません
COMMIT;
を実行するべきではありません前に、どのトランザクション - レコードの「1」の表の代わりに「」留まります。
このような現象を回避する方法はありますか?私はまた、意図的にCREATE TABLE STATEMENTで構文エラーが発生した場合、期待通りに失敗するが、 'a'のレコードは作成されないことに気付きました。
参考および説明をいただきありがとうございます。 一貫性を保つために実行中にDBをロックする方法はありますか? – Alexey
https://stackoverflow.com/questions/16221993/how-to-prevent-mysql-implicit-commitへのリンクが追加されました。 – swa66