Qt踩坑之mysql数据库不支持事务操作?


现象:

在调试数据库操作时,我发现提交数据没有插入到表中。执行回滚没有效果。很明显,已经调用了transaction()。这是为什么?

开始故障排除:

1。确定数据库驱动程序是否支持事务?使用qsqlDriver的hasFeature函数,函数的参数driverFeature是qsqlDriver的枚举。

0×251C

qsqldriver可以通过qsqldatabase driver()函数获得。经测试,不支持不科学的事务。

2。不支持事务创建表时是否出现数据库引擎选择错误?使用mysql workbench查看表信息:

0×251d

InnoDB是一个支持事务,这更奇怪。

三。不是mysql的问题,而是qt的问题。首先想到的是qt编译的数据库驱动程序问题,所以mysql数据库驱动程序被重新编译,测试仍然显示事务不受支持。

4。最后要考虑的是程序运行时存在问题。程序在使用mysql时需要使用mysql动态库libmysql.dll,将mysql安装目录下的libmysql.dll复制到应用程序目录下,再次测试事务函数。问题的原因是应用程序目录中存在不同版本的libmysql.dll(计算机中安装了许多版本的环境…)。

http://szkinga.com.cn