mysql-事务(续)
2015-12-30 22:14
471 查看
昨天的一更是介绍了如何使用mysql的事务,而因为昨天的时间问题,mysql的事务的一直并未实现。
今天花了些时间找到了问题的所在。网上的资料一再说明了,只有mysql的innodb的表引擎才支持事务。我也一直认为我建的表是innodb的表引擎,因为自己的写的sql的脚本文件中已经明确指定了表的引擎为innodb,所以一时并没有怀疑是这个问题导致,在认真查看了mysql的配置(my.conf)并没有异常。无奈之下,还是先确认下表的引擎是否真的是innodb。在mysql的命令行下利用下面的命令。
show table status from DB_name where name = ‘table_naem’
结果让我感叹,人还是不要太过自信的好,显示的结果表明了创建的表的引擎是MyISAM(汗。。。),原来,创建该数据库的sql脚本文件并不是我编写的那个,而是很早之前导出转存的一份sql脚本。在确定了的确是这个问题,用下面命令修改了表的存储引擎。
alter table table_name engine=innodb
再次执行一次事务的操作,发现这次rollback以及commit成功了。到目前为止,无法实现mysql的事务的问题也得到了解决。下面贴上我的大概的一个代码片段。基于mysqlclient的库头文件的实现。
上面的代码只是一个demo片段,省略了不少内容,并不能真正的使用。查看数据库发现如果该条数据没有删除,并且程序没有报错,那么我们的mysql的事务操作便实现了。
其实mysql我并不了解,只是通过以后的多多学习,毕竟数据库的知识还是要掌握的。
今天花了些时间找到了问题的所在。网上的资料一再说明了,只有mysql的innodb的表引擎才支持事务。我也一直认为我建的表是innodb的表引擎,因为自己的写的sql的脚本文件中已经明确指定了表的引擎为innodb,所以一时并没有怀疑是这个问题导致,在认真查看了mysql的配置(my.conf)并没有异常。无奈之下,还是先确认下表的引擎是否真的是innodb。在mysql的命令行下利用下面的命令。
show table status from DB_name where name = ‘table_naem’
结果让我感叹,人还是不要太过自信的好,显示的结果表明了创建的表的引擎是MyISAM(汗。。。),原来,创建该数据库的sql脚本文件并不是我编写的那个,而是很早之前导出转存的一份sql脚本。在确定了的确是这个问题,用下面命令修改了表的存储引擎。
alter table table_name engine=innodb
再次执行一次事务的操作,发现这次rollback以及commit成功了。到目前为止,无法实现mysql的事务的问题也得到了解决。下面贴上我的大概的一个代码片段。基于mysqlclient的库头文件的实现。
int mysqlTransaction(mysql *dbConnection) { int iRet = 0; /* 开始一次事务 */ iRet = mysqli_query(dbConnection, "begin"); if (!iRet ) { return -1; } /* 开始执行一条命令 */ iRet = mysqli_query(dbConnection, "delete from tbl_name where id = '1'"); if (!iRet ) { return -1; } /* 回滚上一次操作 */ iRet = mysqli_rollback(dbConnection); if (!iRet ) { return -1; } return 0; }
上面的代码只是一个demo片段,省略了不少内容,并不能真正的使用。查看数据库发现如果该条数据没有删除,并且程序没有报错,那么我们的mysql的事务操作便实现了。
其实mysql我并不了解,只是通过以后的多多学习,毕竟数据库的知识还是要掌握的。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复