我目前正在开发一个使用MySQL数据库的应用程序。

数据库结构在开发过程中仍在变化和变化(我更改本地副本,只保留测试服务器上的副本)。

是否有一种方法可以比较数据库的两个实例,以查看是否有任何更改?

虽然目前简单地丢弃之前的测试服务器数据库是可以的,但是随着测试开始输入测试数据,这可能会变得有点棘手。 同样的情况会在以后的制作中再次发生……

是否有一种简单的方法来增量地对生产数据库进行更改,最好是自动创建一个脚本来修改它?


答案中提到的工具:

Red-Gate的MySQL模式和数据比较(商用) Maatkit(现为Percona) liquibase 蟾蜍 Nob Hill数据库比较(商业) MySQL Diff SQL EDT(商用)


当前回答

通过RedGate进行SQL比较 http://www.red-gate.com/products/SQL_Compare/index.htm

DBDeploy以自动化的方式帮助进行数据库变更管理 http://dbdeploy.com/

其他回答

还有一个开源命令行mysql-diff工具:

http://bitbucket.org/stepancheg/mysql-diff/

非常容易使用的比较和同步工具: 数据库比较器 http://www.clevercomponents.com/products/dbcomparer/index.asp

优点:

快 使用方便 易于选择要应用的更改

缺点:

不同步长度到小整数 没有正确地同步索引名 不同步注释

对于问题的第一部分,我只是把两者都做了一下,并将它们区别开来。不确定mysql,但postgres pg_dump有一个命令,只转储模式而不转储表内容,所以你可以看到你是否改变了模式。

看一下MySQL的dbForge数据比较。这是一个共享软件,有30天的免费试用期。它是一个快速的MySQL GUI工具,用于数据比较和同步、数据差异管理和可定制的同步。

在网上搜索了几个小时后,我发现我没有在Ubuntu软件中心寻找简单的工具。 以下是我找到的一个免费解决方案: http://torasql.com/ 他们声称也有Windows版本,但我只在Ubuntu下使用。

编辑:2015 - 2月- 05 如果你需要Windows工具,TOAD是完美的和免费的: http://software.dell.com/products/toad-for-mysql/