我正在尝试使用Liquibase来管理设备的后端SQLite数据库。我们的想法是,在安装时,应用程序可以生成回滚脚本,如果应用程序已卸载并替换为早期版本,则可以使用该回滚脚本。
出现的问题是,运行tagDatabase
变更集会覆盖当天早些时候完成的任何代码。检查documentation表明标记操作运行如下面的示例SQL:
UPDATE DATABASECHANGELOG SET TAG = 'version_1.3' WHERE DATEEXECUTED = (SELECT MAX(DATEEXECUTED) FROM (SELECT DATEEXECUTED FROM DATABASECHANGELOG) AS X);
那么,Liquibase在一天内做多个标签的方式是否有办法?或者我是否需要编写自己的SQL来更改DATABASECHANGELOG
表?我宁愿不做后者,因为它很可能打破未来版本的Liquibase。
答案 0 :(得分:1)
好的,我看到你的数据库看起来像DATEEXECUTED没有时间(只有日期)。是不是可以随时间将其更改为日期类型? 我在这里看到了一些讨论:https://github.com/liquibase/liquibase/pull/392看起来像一个已知问题,但是在修复程序中提到的数据库列表中没有sqllite。 所以看看最新版本,如果它没有修复,可能它还不支持你需要使用普通的sql查询或自定义更改(http://www.liquibase.org/documentation/changes/custom_change.html)自己实现这个标记逻辑。