你知道同步两个数据库的任何应用程序吗?在开发过程中,有时需要添加一两个表行或新表或列。通常我在某个文件中编写每个 sql 语句,并且在上传路径期间,我在我的生产数据库中删除这些行(之前备份它)。我使用 mySQL 和 postreSQL 数据库。
你的做法是什么,哪些应用程序可以帮助你。
你知道同步两个数据库的任何应用程序吗?在开发过程中,有时需要添加一两个表行或新表或列。通常我在某个文件中编写每个 sql 语句,并且在上传路径期间,我在我的生产数据库中删除这些行(之前备份它)。我使用 mySQL 和 postreSQL 数据库。
你的做法是什么,哪些应用程序可以帮助你。
您要求提供工具或应用程序答案,但您真正需要的是流程答案。这里的基本主题是您应该对数据库 DDL(和 DML,如果需要)进行版本控制,并提供更改脚本以便能够将数据库的任何版本更新到更高版本。
由 Jeff Atwood 提供并由 K. Scott Allen 编写的这组链接详细解释了这应该是什么样子 - 他们做得比我在这里写的要好:http: //www.codinghorror.com/blog/ 2008/02/get-your-database-under-version-control.html
对于 PostgreSQL,您可以使用Another PostgreSQL Diff Tool。它可以非常快速地区分两个 SQL 转储(在具有大约 300 个表、50 个视图和 500 个存储过程的数据库上只需几秒钟)。因此,您可以轻松找到您的更改并获得可以执行的 sql 差异。
从 APGDiff 页面:
另一个 PostgreSQL Diff Tool 是简单的 PostgreSQL diff 工具,可用于模式升级。该工具比较两个模式转储文件并创建适合升级旧模式的输出文件(经过一些手工修改后)。
拥有只添加到底部的脚本(当然是在源代码控制下)。结合从您的生产数据库到开发的定期恢复,您应该是黄金。如果您对此要求严格,则效果很好。
否则,我知道很多人为 SQLServer 使用 redgate 的东西。
对 RedGate SQL 比较的另一票
http://www.red-gate.com/products/SQL_Compare/index.htm
没有它不想活!
编辑:对不起,这似乎只适用于 SQL Server。仍然 - 如果任何 SQL Server 用户有同样的问题,我肯定会推荐这个工具。
如果您为您的开发数据库编写 SQL 语句(我想这是一系列 DDL 指令,例如 CREATE、ALTER 和 DROP),为什么不通过将它们记录在一个表中来跟踪它们,并带有“版本” “ 指数?然后,您将能够:
蟾蜍
过去曾多次救过许多驴。为什么人们在没有退出策略的情况下运行 sql?
红门一号也不错。
Siebel(CRM、销售等管理产品)有一个内置工具可以将生产数据库与开发数据库保持一致(dev2prod)。
否则,您必须坚持使用手动执行的脚本。
Navicat有一个结构同步向导来处理这个。
DBV - “数据库版本控制,变得简单!” (PHP)
我通过使用Hibernate解决了这个问题。它可以检测并自动创建丢失的表、列等。
您可以使用dbDeploy或类似的脚本为您当前的工作方式添加一些自动化。这将允许您跟踪您的架构更改并在您认为合适的时候升级/回滚您的架构。
这是我为同步 Magento 数据库而编写的直接 linux bash 脚本......但您可以轻松修改它以用于其他用途:)
http://markshust.com/2011/09/08/syncing-magento-instance-production-development