Liquibase:UPDATE脚本(当数据库中已经实现了一些更改时)

时间:2013-03-13 12:45:49

标签: database migration liquibase

好的,所以问题可能在于我的liquibase方法,我已经在数据库方面实现了一些更改,我想创建更改集,所以我只需要在我的更改集中添加一个新的sql文件。当我尝试运行luquibase update命令时,我收到错误,告诉我数据库中存在一些列。

在我创建更改集脚本之前,我尝试在数据库中添加列(即使用PhpMyAdmin),这是正常的。然后我想与其他开发人员分享这些变化,所以我生成sql(来自我的更改),在sql文件中添加它并在changeset中启动此文件。 有人可以告诉我我做错了吗?

当我向mysql表中添加一些新列时,问题出现问题,然后我创建了sql文件whit alter_table脚本,然后运行liquibase update命令。

2 个答案:

答案 0 :(得分:0)

不要在数据库中进行手动更新。所有架构更改都必须使用liquibase完成,否则 - 在您的情况下 - 您的更改集将与现有架构冲突。

答案 1 :(得分:0)

虽然使用Liquibase对数据库进行所有更改都是理想的,但肯定存在无法实现的情况。一个是你描述的用例。另一种情况是,如果将修补程序应用于生产并需要合并回开发。

如果您确定自己的变更集已应用于环境,请考虑运行changelogSync。它将声明已应用所有更改集,并将使用适当的信息更新Liquibase元表。

虽然不理想,但我们认为更改logSync是真实世界应用程序所必需的,有时生活无法按照我们的意愿进行。这就是我们确定在Datical DB中清楚地公开它的原因。我们认为它在现实与理想主义之间取得平衡。