首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测两个数据库之间的表和存储过程更改?

如何检测两个数据库之间的表和存储过程更改?
EN

Stack Overflow用户
提问于 2012-09-14 14:00:47
回答 3查看 2.3K关注 0票数 0

我有两个数据库,一个用于我的开发系统,另一个是生产系统。

有可能检测到两个系统之间的结构变化吗?(没有数据,只应检测到结构变化)

目前,我更新了一个文本文件,它包含了表存储过程的所有结构更改。我想自动这样做,例如在deploy脚本中。

以下是解决这个问题的尝试。问题是,我无法获得可以执行的完整sql语句。

代码语言:javascript
复制
mysqldump --skip-comments --no-data --routines --host=sql.test.de --user=root --password=123 bim_stage > /home/deploybackups/stagestructure.sql 
mysqldump --skip-comments --no-data --routines --host=sql.test.de --user=root --password=123 bim_dev > /home/deploybackups/devstructure.sql

diff /home/deploybackups/stagestructure.sql /home/deploybackups/devstructure.sql > /home/deploybackups/diffstructure.sql
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-14 14:34:02

我相信您可以用一些文本或GUI比较工具来解决大多数问题。然而,每次格式被改变或者有人没有遵循你的标准时,一切都会改变。在的某个地方,会发现自己修复了奇怪的错误,比如计数空白等。

我要说的是,根据我的经验,这并不是最好的方法。多年来,我在如何解决这个更新问题上看到了一些不同的尝试。

  • Visual通过创建一个数据库项目对此有一个角度,该项目在某种版本日志中保存所有更改。对细节还不太确定。简单地说,您可以按、同步、和tada!它很有效,但是如果你问我的话,它是非常全面和缓慢的。

处理此IMO的最简单方法是将所有结构更改转换为一个版本日志/表;可以这么说。

假设您的基本数据库需要一个新的表。您将进入您的编辑器并添加它(使用GUI或代码),按下保存,您就完成了。

相反,请按提取SQL;不要按保存。

我现在的建议是:

你用一个大输入框和一个提交按钮构建了一个小的内部网页界面。单击submit按钮将在本地开发数据库的输入框中执行任何SQL,并返回结果。

如果DB返回成功,则将SQL字符串添加到changeLogSQLVersionThingyTable中,其中至少有三列:

1)自动增量版本(Integer) 2) sql (text) 3)时间戳(timedate) 4)开发人员Id?

当您对DB进行了更改,例如添加以前的表时,请使用此工具。

现在,您可以在一个很好的版本列表中对数据库进行所有更改。要更新数据库,您所要做的就是执行changeLogSQLVersionThingyTable中的每一行,从该特定数据库的任何版本更新到最后一次。

通过一些努力,您还可以将数据库重新构建到更早的位置;只需创建一个新的db,并一直运行所有行,直到您想要的版本点。

票数 1
EN

Stack Overflow用户

发布于 2012-09-14 14:18:45

您可以使用MySQL GUI工具(如SQLyog )来轻松地完成它。SQlyog的Schema同步向导能够执行所需的操作,即检查结构的更改并同步它们。请看附上的截图。

票数 1
EN

Stack Overflow用户

发布于 2012-09-14 16:00:57

当这个过程被打破的时候,你想要做一个技术性的解决方案。谁在没有安排完全相同的sql应用于阶段、QA和开发的情况下对产品进行了最初的更改?

尽管如此,如果您有一个“正常”的-sized数据库,并且“不经常”发生这些更改,我将使用diff方法来确定是否进行了更改。手动创建一个影响更改的SQL脚本并不困难。不过,我还是会骚扰那个做出改变的人。

请注意,diff有忽略空格/空白行更改的选项。

完成之后,将新模式签入源代码存储库。总有一天会派上用场的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12426119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档