Sql 如何在构建过程中包含数据库更改(DDL补丁、一次性数据插入等)?

Sql 如何在构建过程中包含数据库更改(DDL补丁、一次性数据插入等)?,sql,continuous-integration,build-automation,ddl,Sql,Continuous Integration,Build Automation,Ddl,我运行构建脚本,然后我必须记住每次部署应用程序时要运行哪些数据库SQL和PL/SQL脚本。如何在构建脚本中包含这些修补程序?还是每个人都只是手动运行它们?目前,我为我的补丁程序编号,以便知道运行它们的顺序,但有时我必须检查SVN历史记录,以知道从哪个编号开始 我正在使用PHP,但可以使用Java来解决这个问题。可能会为您解决这个问题,它集成到ant或maven中,但也可以从cmd行开始。您应该将更改保存为脚本,并将其与其他代码一样放在源代码管理中。然后您就知道哪些更改属于哪个构建,需要升级到pr

我运行构建脚本,然后我必须记住每次部署应用程序时要运行哪些数据库SQL和PL/SQL脚本。如何在构建脚本中包含这些修补程序?还是每个人都只是手动运行它们?目前,我为我的补丁程序编号,以便知道运行它们的顺序,但有时我必须检查SVN历史记录,以知道从哪个编号开始


我正在使用PHP,但可以使用Java来解决这个问题。

可能会为您解决这个问题,它集成到ant或maven中,但也可以从cmd行开始。

您应该将更改保存为脚本,并将其与其他代码一样放在源代码管理中。然后您就知道哪些更改属于哪个构建,需要升级到prod。

因为您使用的是PHP,所以这是一个明智的选择。对于每个DB表,您将有一个开始文件和许多修补程序,例如:

001 user.sql
002 project.sql
501 user-AddColumnAvatar.sql

等等。我下一步做:
trunk/Database/Patches/0.9.2到0.9.3/x_table.sql
我将脚本置于源代码管理中,但我没有找到一种令人满意的方法来跟踪哪些脚本已经运行,哪些还没有运行。我想把它们放在abatischev建议的应用版本文件夹名称中是一种选择,但仍然有一个手动组件。我想知道是否使用扩展属性来存储对象的版本,并在推动更改之前进行测试?或者理想情况下,解决方案不应该触及数据库?