QSqlQuery表示参数计数不匹配



我使用QSqlQuery在我的Qt5/c++程序中创建一个简单的SQLite更新。当我执行下面的查询时,我得到了错误"参数计数不匹配"。但是为什么呢?

QSqlQuery updateQuery;
updateQuery.prepare("UPDATE mytable SET m=:m WHERE r=:r AND u=:u LIMIT 1");
updateQuery.bindValue(":m", m);
updateQuery.bindValue(":r", r);
updateQuery.bindValue(":u", u);
sqlErrors = !updateQuery.exec();

变量m, r, u是QString的。我有3个参数,并将它们都绑定。哪里不匹配?像这样的帖子只涉及INSERT命令,但其他所有适用的似乎都是正确的。

检查lastQuery()确认绑定替换没有发生。我还可以看到prepare语句失败(返回false) -但对我来说它看起来像有效的SQL。

问题似乎出在LIMIT字上。一些SQLite包编译时没有SQLITE_ENABLE_UPDATE_DELETE_LIMIT标志。这意味着您不能在update语句中添加限制。

似乎是一个默认关闭的奇怪功能(从基础repo分发)…但就是这样。