windows(appveyor)上的qt-mysql驱动程序不支持事务特性;即。:
QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions); //returns false
QSqlDatabase::database().transaction(); //raises exception
问题是:怎么了如何让它工作?
同样的代码在linux(ubuntu和arch)上运行得非常好,但在windows、appveyor ci(在我的例子中)上失败,例如:https://ci.appveyor.com/project/konserw/koferta/build/devel-ci-281
环境:
visual studio 2017年
MySQL5.7版本
qt5.11(mysql插件预先构建在image上,可能来自qt二进制发行版)
软件完整列表:https://www.appveyor.com/docs/build-environment/#pre-已安装软件(vs 2017专栏)
链接到源:https://github.com/konserw/koferta/tree/devel
编辑:
我通过检查驱动程序是否支持事务以及是否跳过代码中的事务来解决这个问题。我将接受这个问题,因为它是appveyor/mysql唯一的问题,所以只有我的测试才能在没有事务的情况下运行。
对于生产环境,我已经将mariadb c/c++connector binaries for windows中的dll复制到我的应用程序binary dir中,它在我的(远程)linux/mariadb服务器上运行良好。
暂无答案!
目前还没有任何答案,快来回答吧!