我目前正在使用MySQL数据库开发应用程序。
数据库结构仍在不断变化中,并且随着开发的进展而变化(我更改了本地副本,仅将其保留在测试服务器上)。
有没有一种方法可以比较数据库的两个实例以查看是否有任何更改?
尽管当前只是简单地丢弃以前的测试服务器数据库是可以的,但是随着测试开始输入测试数据,它可能会有些棘手。 相同但更多,稍后将在生产中再次发生…
有没有一种简便的方法可以增量地更改生产数据库,最好是自动创建一个脚本来对其进行修改?
答案中提到的工具:
如果您正在使用小型数据库,我发现两个数据库都使用--skip-comments和--skip-extended- insert选项在mysqldump上运行以生成SQL脚本,那么在SQL脚本上运行diff效果很好。
--skip-comments
--skip-extended- insert
通过跳过注释,可以避免无意义的差异,例如运行mysqldump命令的时间。通过使用--skip-extended- insert命令,可以确保每行都使用自己的插入语句插入。这消除了单个新记录或修改后的记录可能在以后所有插入语句中引起连锁反应的情况。使用这些选项运行会产生较大的转储而没有注释,因此这可能不是您在生产中要执行的操作,但是对于开发来说应该没问题。我在下面放置了一些命令示例:
mysqldump --skip-comments --skip-extended-insert -u root -p dbName1>file1.sql mysqldump --skip-comments --skip-extended-insert -u root -p dbName2>file2.sql diff file1.sql file2.sql