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