mysql不能回滚问题
来源:互联网 发布:mac上的p图软件 编辑:程序博客网 时间:2024/05/06 09:19
今天遇到一个自己认为很诡异的问题:mysql无法回滚
详细描述:
之前的项目中有块功能是需要的动态创建表,因为之前测试很简单没发现这个问题,导致今天问题暴露了。
创建表语句是这样的:
CREATE TABLE `test` (`auto_id` int NOT NULL auto_increment COMMENT "自增字段",`enum` smallint NOT NULL COMMENT "枚举单选测试",`multi` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "枚举多选测试",`key1` int(7) NOT NULL COMMENT "键1",`key2` smallint NOT NULL COMMENT "键2",`text1` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT "文本1",PRIMARY KEY (`auto_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
排查问题,故意在代码中抛出异常来触发回滚命令。
执行完代码发现回滚命令已经执行,但是表依然创建了,反复多次,都是一样。
开始排查:
1.检查Python代码是否启动事务处理...已启用
2.检查MySQL-python驱动是否有问题...经测试没有问题
3.mysql数据库、表存储引擎是否是Innodb...是
这2项检查完就开始头疼了,因为涉及到事务无法回滚一般都是这2块没有设置好导致。
但是现在2块检查完毕都是没有问题的,怎么会无法回滚。
没办法,只能找mysql官方手册看看能否找到原因。
找了一段时间,终于在mysql手册的 "MySQL事务处理和锁定语句"段中找到答案
13.4.2. 不能回滚的语句有些语句不能被回滚。通常,这些语句包括数据定义语言(DDL)语句,比如创建或取消数据库的语句,和创建、取消或更改表或存储的子程序的语句。您在设计事务时,不应包含这类语句。如果您在事务的前部中发布了一个不能被回滚的语句,则后部的其它语句会发生错误,在这些情况下,通过发布ROLLBACK语句不能 回滚事务的全部效果。
原来对于数据定义语句是无法回滚的。
思过:
怪自己太浮躁,mysql手册很多东西都没有详细阅读过。
- mysql不能回滚问题
- Mysql 不能回滚的语句
- mysql的procedure错误回滚问题
- mysql事务回滚的问题
- mysql 创建表不能使用“事务”回滚
- mysql 创建表不能使用“事务”回滚
- c3p0连接池事务不能回滚的问题
- ssh 事务不能回滚的问题总结
- 关于回滚,mysql
- Mysql回滚不成功
- Mysql事物回滚
- MySQL事务回滚
- mysql 回滚
- mysql回滚数据
- MYsql单独使用mybatis事务处理的无法回滚问题
- MySql 执行事务无效无法回滚问题
- 事务无法回滚(mysql数据库存储引擎问题)
- 事务回滚问题
- Opengl ES1 笔记 2013-04-24
- 苹果iPhone开发官方文档翻译和学习
- 代理模式——静态代理
- WSAIoctl返回10045错误
- 头文件中定义和声明的问题
- mysql不能回滚问题
- linux下配置ip地址四种方法(图文)
- 解决mencoder打LOGO花屏的BUG
- 开始
- 关于Start off
- windows下java JNI编程技巧——JAVA调用c/c++(0) .
- SPI、I2C、UART三种串行总线的原理、区别及应用
- LIBPCAP用户命令编译过程发现
- HDOJ 2136 Largest prime factor 13.04.21 周赛结题报告 (素数筛选法)