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

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

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

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

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


答案中提到的工具:

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


当前回答

用于MySQL的Toad具有数据和模式比较功能,我相信它甚至可以创建同步脚本。最重要的是,它是免费的。

其他回答

apache zeta组件库是一个通用的松耦合组件库,用于开发基于PHP 5的应用程序。

eZ组件- DatabaseSchema允许您:

   .Create/Save a database schema definition;
   .Compare database schemas;
   .Generate synchronization queries;

你可以在这里查看教程: http://incubator.apache.org/zetacomponents/documentation/trunk/DatabaseSchema/tutorial.html

dbSolo,它是付费的,但这个功能可能是你正在寻找的 http://www.dbsolo.com/help/compare.html

它适用于Oracle, Microsoft SQL Server, Sybase, DB2, Solid, PostgreSQL, H2和MySQL

就我个人而言,我将从转储两个数据库开始,并对转储进行差异处理,但如果您希望自动生成合并脚本,则需要使用真正的工具。

简单的谷歌搜索可以找到以下工具:

MySQL工作台,有社区版(OSS)和商业版。 Nob Hill数据库比较,免费提供MySQL。 其他SQL比较工具的列表。

我用一个叫Navicat的软件:

同步Live数据库到我的测试数据库。 显示两个数据库之间的差异。

它要花钱,只能在windows和mac上使用,界面也很古怪,但我喜欢。

用于MySQL的Toad具有数据和模式比较功能,我相信它甚至可以创建同步脚本。最重要的是,它是免费的。