43

你知道同步两个数据库的任何应用程序吗?在开发过程中,有时需要添加一两个表行或新表或列。通常我在某个文件中编写每个 sql 语句,并且在上传路径期间,我在我的生产数据库中删除这些行(之前备份它)。我使用 mySQL 和 postreSQL 数据库。

你的做法是什么,哪些应用程序可以帮助你。

4

13 回答 13

30

您要求提供工具或应用程序答案,但您真正需要的是流程答案。这里的基本主题是您应该对数据库 DDL(和 DML,如果需要)进行版本控制,并提供更改脚本以便能够将数据库的任何版本更新到更高版本。

由 Jeff Atwood 提供并由 K. Scott Allen 编写的这组链接详细解释了这应该是什么样子 - 他们做得比我在这里写的要好:http: //www.codinghorror.com/blog/ 2008/02/get-your-database-under-version-control.html

于 2010-10-12T11:46:52.247 回答
6

对于 PostgreSQL,您可以使用Another PostgreSQL Diff Tool。它可以非常快速地区分两个 SQL 转储(在具有大约 300 个表、50 个视图和 500 个存储过程的数据库上只需几秒钟)。因此,您可以轻松找到您的更改并获得可以执行的 sql 差异。

从 APGDiff 页面:

另一个 PostgreSQL Diff Tool 是简单的 PostgreSQL diff 工具,可用于模式升级。该工具比较两个模式转储文件并创建适合升级旧模式的输出文件(经过一些手工修改后)。

于 2008-11-01T18:38:48.343 回答
5

拥有只添加到底部的脚本(当然是在源代码控制下)。结合从您的生产数据库到开发的定期恢复,您应该是黄金。如果您对此要求严格,则效果很好。

否则,我知道很多人为 SQLServer 使用 redgate 的东西。

于 2008-11-01T18:25:24.800 回答
5

对 RedGate SQL 比较的另一票

http://www.red-gate.com/products/SQL_Compare/index.htm

没有它不想活!

编辑:对不起,这似乎只适用于 SQL Server。仍然 - 如果任何 SQL Server 用户有同样的问题,我肯定会推荐这个工具。

于 2008-11-01T19:53:16.790 回答
2

如果您为您的开发数据库编写 SQL 语句(我想这是一系列 DDL 指令,例如 CREATE、ALTER 和 DROP),为什么不通过将它们记录在一个表中来跟踪它们,并带有“版本” “ 指数?然后,您将能够:

  1. 跟踪您的版本更改
  2. 制定一个小例程,通过将记录的指令发送到数据库来“自动”更新您的生产数据库。
于 2008-11-03T20:35:33.787 回答
1

我真的很喜欢EMS 工具

这些工具适用于所有流行的数据库,并且您对每种类型的数据库都有相同的用户体验。

工具之一是 DB 比较器。

于 2008-11-02T11:19:09.667 回答
1

蟾蜍

过去曾多次救过许多驴。为什么人们在没有退出策略的情况下运行 sql?

红门一号也不错。

于 2010-10-12T14:36:54.073 回答
0

Siebel(CRM、销售等管理产品)有一个内置工具可以将生产数据库与开发数据库保持一致(dev2prod)。

否则,您必须坚持使用手动执行的脚本。

于 2008-11-01T18:25:25.487 回答
0

Navicat有一个结构同步向导来处理这个。

于 2008-11-01T18:28:20.457 回答
0

DBV - “数据库版本控制,变得简单!” (PHP)

于 2014-01-02T20:29:16.690 回答
0

我通过使用Hibernate解决了这个问题。它可以检测并自动创建丢失的表、列等。

于 2008-11-01T21:47:31.100 回答
0

您可以使用dbDeploy或类似的脚本为您当前的工作方式添加一些自动化。这将允许您跟踪您的架构更改并在您认为合适的时候升级/回滚您的架构。

于 2010-10-13T08:25:10.617 回答
0

这是我为同步 Magento 数据库而编写的直接 linux bash 脚本......但您可以轻松修改它以用于其他用途:)

http://markshust.com/2011/09/08/syncing-magento-instance-production-development

于 2011-09-08T19:54:03.557 回答