【发布时间】:2014-04-11 19:48:25
【问题描述】:
我在 Android 上使用 QtQuick/QML/Qt5.2.1。我也在桌面而不是 Android 上测试了这个问题,我发现了同样的问题。
我使用LocalStorage在应用程序关闭后持久化应用程序数据。
我使用openDatabaseSync打开一个数据库:
var db = LocalStorage.openDatabaseSync(
"TestDB",
"1.0", <-- version
"Test Database",
1000000,
function(db) {
createSchema(db);
populateData(db);
}
);
如果数据库不存在且已创建,则执行回调函数,在这种情况下,我创建数据库架构并填充初始数据集。
下次应用程序启动时,显然我想保持数据库原样而不是重新创建它。
问题是当我重新启动应用程序时出现此错误:
Error: SQL: database version mismatch
如果我检查在第一次运行应用程序时创建数据库时创建的 .ini 文件,我会看到:
[General]
Description=Test Database
Driver=QSQLITE
EstimatedSize=1000000
Name=TestDB
Version=
您可以清楚地看到这里的一个问题是“版本”属性为空。
当应用程序启动时,它会将请求的版本“1.0”与这个空字符串“”进行比较并失败。
我当然可以通过将版本指定为“”或通过修复 ini 文件来伪造它以使其工作 - 至少告诉我代码在其他方面是正确的 - 但显然这不是解决方案。
那么,我是否遗漏了什么或者这是一个 Qt 错误?
【问题讨论】: