2012-11-18 9 views
5

(MySQL 5.5、InnoDBテーブル)セーブポイントまたは前のbeginステートメントにロールバックできないのはなぜですか?ALTER TABLE後にMySQLシェルのロールバックが機能しない

mysql> set autocommit=0; 
Query OK, 0 rows affected (0.00 sec) 

mysql> start transaction; 
Query OK, 0 rows affected (0.00 sec) 

mysql> savepoint id; 
Query OK, 0 rows affected (0.00 sec) 

mysql> alter table sg_Section add column (published tinyint(1) default 0); 
Query OK, 2 rows affected (0.30 sec) 
Records: 2 Duplicates: 0 Warnings: 0 

mysql> rollback to savepoint id; 
ERROR 1305 (42000): SAVEPOINT id does not exist 

セーブポイントの後に任意のコマンドを実行していない場合は、«仕事»をするようだ:

mysql> savepoint id; 
Query OK, 0 rows affected (0.00 sec) 

mysql> rollback to savepoint id; 
Query OK, 0 rows affected (0.00 sec) 
+0

任意のリーダーがDDL文に 'ROLLBACK'を必要とする場合は、PostgreSQLはそれをサポートしています。 – halfer

答えて

9

DDLは、MySQLでトランザクションされていません。

すべてのDDL文は、オープントランザクションを暗黙的にコミットします。マニュアルで

詳細:http://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html

+0

ありがとうございました! –

関連する問題