我默认使用InnoDb引擎。这看起来很奇怪:
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> set session transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)
mysql> create table test_1(id int);
Query OK, 0 rows affected (0.07 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+------------------+
| Tables_in_reestr |
+------------------+
| test_1 |
+------------------+
1 rows in set (0.00 sec)
看起来很奇怪,因为我开始交易并回滚,但无济于事。那么,我做错了什么?
答案 0 :(得分:2)
扩展上面的注释:在MySQL中,基本上所有改变数据库对象的操作都会执行自动提交。主要类别是:
CREATE/ALTER/DROP TABLE/VIEW/INDEX
...,mysql
的任何内容,例如ALTER/CREATE USER
,ANALYZE
,实际上,我认为最好假设INSERT
,UPDATE
和DELETE
是安全的,而其他任何东西都不是。
来源:https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html