2017-06-16 107 views
1

服務器版本:5.7.17 MySQL社區服務器(GPL)MySQL在創建表時失敗時創建事務提交表

這是我的情況。 我有兩張桌子。現在

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」表中地點「A」的住宿環境。

你有什麼想法或想法如何避免這種行爲?我也注意到,當我故意在CREATE TABLE STATEMENT中執行語法錯誤時,它會像預期的那樣失敗,但是不會創建'a'中的記錄。

回答

1

有一些導致隱式提交的語句。 CREATE TABLE就是其中之一。

更多信息: https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html

也許How to prevent mysql implicit commit能有點幫助。

+0

感謝您的參考和解釋。 您是否知道在執行期間鎖定數據庫以保持一致性的任何方式? – Alexey

+0

添加鏈接到https://stackoverflow.com/questions/16221993/how-to-prevent-mysql-implicit-commit可能有幫助。 – swa66