0

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

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

问题涉及我向 mysql 表添加一些新列时的情况,然后我使用 alter_table 脚本创建了 sql 文件,然后运行 ​​liquibase update 命令。

4

2 回答 2

0

虽然事先使用 Liquibase 完成对数据库的所有更改是理想的,但在某些情况下这是不可能的。一个是您描述的用例。另一种情况是,如果将修补程序应用于生产并需要合并回开发。

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

虽然并不理想,但我们认为 changelogSync 对于现实世界的应用程序是必需的,有时生活并没有像我们希望的那样发展。这就是为什么我们一定要在 Datical DB 中清楚地公开它。我们认为它在现实和理想主义之间取得了平衡。

于 2013-10-21T14:36:42.713 回答
0

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

于 2013-03-13T14:00:28.083 回答