使数据库架构保持最新

Syn*_*ews 2 sql versioning schema

我正在编写一个使用数据库(目前是MySQL 4)来存储数据的应用程序.

我可能会稍后以更新的形式对此进行更改以添加其他数据.更新应用程序很简单,它基本上归结为用新的程序文件覆盖程序文件.但是,如何更新数据库架构?

数据库是远程的,因此我的应用程序可能存在于多个位置,因此只需在安装程序中转储ALTER和CREATE语句就会导致多次更改,并且我已经明确要求提供允许应用程序的自动解决方案要在过渡期间更新的副本,以及要自动进行架构更新的副本.

我考虑在启动时检查模式以查找缺少的表和列,并根据需要添加它们,但这似乎不是一个干净的解决方案.我也算是把某种"架构版本"号的数据库上,但不能看到任何方式做到这一点很短的单行表与诠释"版本"列这似乎不是一个好办法要么.

Boh*_*ian 5

我强烈推荐Liquibase.它确实有效 - 我已经使用它并且给人留下了非常深刻的印象.

本质上,它保留自己的语句日志在数据库上运行,并且只有在尚未运行/需要时才运行它们.它是XML驱动的,允许您使用可选的执行前和执行后语句和条件.您将XML文件检查到源代码管理中,并从构建工具中调用它.它甚至适合驱动生产版本.

这是魔法.


Cap*_*aps 5

而不是滚动自己的系统来版本化数据库,可能值得研究一个现有的框架来管理它.

我使用liquibase并使用maven插件集成到我的构建中.值得一试!