Драйвер Qt MySQL для windows (appveyor) не поддерживает функцию транзакций; т.е .:
QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions); //returns false
QSqlDatabase::database().transaction(); //raises exception
Вопрос в том: В чем дело? / как заставить это работать?
Тот же код прекрасно работает на Linux (Ubuntu и Arch), но не работает на Windows, CI appveyor в моем случае, например: https://ci.appveyor.com/project/konserw/koferta/build/devel-ci-281
Среда:
Ссылка на источники: https://github.com/konserw/koferta/tree/devel
РЕДАКТИРОВАТЬ:
Я обошел эту проблему, проверив, поддерживает ли драйвер транзакции и не пропускает ли транзакции в моем коде. Я буду жить с этим, так как это была проблема только appveyor / mysql, поэтому только мои тесты будут выполняться без транзакций.
Для производственной среды я скопировал dll из двоичных файлов коннектора mariadb c / c ++ для windows в двоичный каталог моего приложения, и он отлично работал с моим (удаленным) сервером linux / mariadb.
Задача ещё не решена.
Других решений пока нет …