我相信类似的工作流程很常见,但在我的搜索中我没有找到任何记录的例子。
目标:
- 我想在git中管理所有mysql(v5.1+)数据库定义,以便我拥有源代码控制的所有好处。
- 我希望通过编辑脚本并运行脚本来定义对数据库的更改,以便我可以使用我选择的编辑器(vim)编辑数据库定义,而不是mysql shell或gui应用程序。
附注:我目前使用mysql shell,但希望使用vim来维护程序和事件,因为在shell中变得难以处理。
计划:
我将使用“--no-data”选项进行初始转储,以获取我的初始脚本,但此后我希望我的工作流程为:编辑脚本 -> 提交 -> 运行脚本,而不是:执行对数据库的更改 -> 转储ddl -> 提交。
注意事项:
如果我使用以下命令转储数据库:
mysqldump -u [user] -p [password] --no-data --routines > ddl.sql
它包括:
DROP TABLE IF EXISTS `[table]`; CREATE TABLE `[table]` ([table definition])
显然,如果我运行该脚本,它将销毁并重新创建表。我想要做的是,如果表存在,则使用定义更改更新表,否则使用定义创建表。我更喜欢在一个 [table]([table dfinition]) 块中定义表格,并重复使用它,而不是维护多个重复的块。
我该如何更改初始转储语法或脚本,以便我可以使用相同的脚本更新数据库,并在另一个环境中重新创建数据库定义(不包括数据)?