保存我的 MySQL 数据模型并在我的开发数据库服务器进行更改时(或至少每晚)自动应用更改的最佳方法是什么?
例如,今天我正在处理我的项目并在我的数据库中创建此表,并将语句保存到 SQL 文件以便稍后部署到生产中:
create table dog (
uid int,
name varchar(50)
);
明天,我决定我也要记录每只狗的品种。所以我将 SQL 文件更改为:
create table dog (
uid int,
name varchar(50),
breed varchar(30)
);
该脚本将在第一个版本的生产中工作,但它不会帮助我更新我的开发数据库,因为ERROR 1050 (42S01): Table 'dog' already exists
. 此外,如果此更改是在第一个版本之后进行的,它将无法在生产中工作。所以我现在真的需要坐到ALTER
桌子上。
所以现在我有两个担心:
- 这是我应该如何保存我的数据模型(SQL 文件中的一堆创建语句),以及
- 我应该如何将这样的更改应用于我的数据库?
我的目标是准确发布更改并实现持续集成。我使用一个名为 DDLSYNC 的工具确实可以在 Oracle 数据库中找到并应用差异,但我不确定 MySQL 存在哪些类似的工具。