改变Smartface应用程序升级的数据库结构

时间:2015-07-03 16:27:21

标签: smartface.io

在Smartface应用程序升级上更改现有数据库的最佳方法是什么?

我的应用程序的新版本的数据库结构略有不同(添加了新列)。

升级时,GUI设计的数据集是新的(使用新列),而现有数据库是旧的(没有这些列)。

现有数据库包含用户数据意味着将其替换为空数据不是一种选择。

以下代码无效(未添加列):

Data.execute("ALTER TABLE TableSettings ADD COLUMN NewColumn TEXT;");
Data.execute("UPDATE TableSettings SET NewColumn = 'test is fine';");
Data.DatasetSettings.refresh();

请分享一些如何解决问题的想法。

1 个答案:

答案 0 :(得分:0)

在升级期间,如果表的结构相同且keepDataOnUpdate标志为true,则将保留数据。


方法1
您可以使用新表来处理。将数据从退出复制到新数据并删除旧数据中的记录。不要删除旧表。


方法2
您可以像现在一样改变表格。对于将来的版本,请向数据库添加一些检查,以避免通过脚本重新添加列。使用动态数据集来处理该表。静态数据集在发布期间与表元紧密绑定;使用静态数据集,您无法使用新列。




在Smartface的未来版本(预期的4.5或4.6)中,将向用户提供数据库管理,以便更好地控制数据库内容以及对更新过程的更多控制。