我目前正在使用MySQL数据库开发一个应用程序.
在开发过程中,数据库 struct 仍在不断变化和变化(我更改了本地副本,将其留在测试服务器上).
是否有方法比较数据库的两个实例以查看是否有任何更改?
虽然目前简单地丢弃之前的测试服务器数据库是可以的,但随着测试开始输入测试数据,它可能会变得有点棘手
有没有一种简单的方法可以增量地对生产数据库进行更改,最好是自动创建一个脚本来修改它?
答案中提到的工具:
我目前正在使用MySQL数据库开发一个应用程序.
在开发过程中,数据库 struct 仍在不断变化和变化(我更改了本地副本,将其留在测试服务器上).
是否有方法比较数据库的两个实例以查看是否有任何更改?
虽然目前简单地丢弃之前的测试服务器数据库是可以的,但随着测试开始输入测试数据,它可能会变得有点棘手
有没有一种简单的方法可以增量地对生产数据库进行更改,最好是自动创建一个脚本来修改它?
答案中提到的工具:
如果您使用的是小型数据库,我发现在这两个数据库上都运行mysqldump,并使用--skip-comments
和--skip-extended-insert
选项生成SQL脚本,那么在SQL脚本上运行diff效果非常好.
通过跳过注释,可以避免无意义的差异,例如运行mysqldump命令的时间.通过使用--skip-extended-insert
命令,可以确保每一行都插入了自己的insert语句.这样就消除了一条新的或修改过的记录可能会在将来的所有insert语句中引发连锁react 的情况.使用这些选项运行会产生更大的转储,而没有任何注释,所以这可能不是您在生产使用中想要做的事情,但对于开发来说应该没问题.下面是我使用的命令示例:
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