As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。
已关闭8年。
已关闭8年。
Locked. This question and its answers are locked,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。
我目前正在使用MySQL数据库开发应用程序。
数据库结构仍在不断变化中,并且随着开发的进展而变化(我更改了本地副本,仅将其保留在测试服务器上)。
有没有一种方法可以比较数据库的两个实例以查看是否有任何更改?
尽管当前只是简单地丢弃以前的测试服务器数据库是可以的,但是随着测试开始输入测试数据,它可能会变得有些棘手。
相同但更多,稍后将在生产中再次发生...
是否有一种简单的方法可以增量地对生产数据库进行更改,最好是自动创建一个脚本来对其进行修改?
答案中提到的工具:
Red-Gate's MySQL Schema & Data Compare(商业) Maatkit (now Percona) liquibase Toad Nob Hill Database Compare(商业) MySQL Diff SQL EDT(商业)
我目前正在使用MySQL数据库开发应用程序。
数据库结构仍在不断变化中,并且随着开发的进展而变化(我更改了本地副本,仅将其保留在测试服务器上)。
有没有一种方法可以比较数据库的两个实例以查看是否有任何更改?
尽管当前只是简单地丢弃以前的测试服务器数据库是可以的,但是随着测试开始输入测试数据,它可能会变得有些棘手。
相同但更多,稍后将在生产中再次发生...
是否有一种简单的方法可以增量地对生产数据库进行更改,最好是自动创建一个脚本来对其进行修改?
答案中提到的工具:
最佳答案
如果您正在使用小型数据库,我发现在两个数据库上都使用--skip-comments
和--skip-extended-insert
选项运行mysqldump来生成SQL脚本,那么在SQL脚本上运行diff效果很好。
通过跳过注释,可以避免无意义的差异,例如运行mysqldump命令的时间。通过使用--skip-extended-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