如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

在各大开源代码中,经常会出现数据库升级的情况。但是由于自己对代码进行过改造,或者开源代码并不提供数据库直接升级的功能的话,数据库结构同步的事情,就变得非常复杂了。在本文中,苏南大叔以目前的cmswing为例,说明一下navicat的数据库结构对比功能。该开源代码的网址见文章末尾。

本文的写作环境是mac,但是win下面的操作应该都差不多。假设我本地的cmswing的数据库,我命名为local,而cmswing的最新版本的数据库,名为remote。我们需要把本地的local升级到最新的remote。但是本地的数据库里面的数据肯定和远程不一致。并且本地local里面有自定义的数据表。

确定操作顺序

navicat的操作界面上,确定谁先谁后,非常重要。否则,会导致相反的结局。对于本次我们的需求,具体见如下截图。

如何使用navicat的数据库结构对比同步功能? - 001
如何使用navicat的数据库结构对比同步功能?(图11-1)

如何使用navicat的数据库结构对比同步功能? - 002
如何使用navicat的数据库结构对比同步功能?(图11-2)

如何使用navicat的数据库结构对比同步功能? - 003
如何使用navicat的数据库结构对比同步功能?(图11-3)

我们的sourceremote,而targetlocal,这个顺序一定不能填错。

进行对比,生成初步的sql范围

如何使用navicat的数据库结构对比同步功能? - 004
如何使用navicat的数据库结构对比同步功能?(图11-4)

如何使用navicat的数据库结构对比同步功能? - 005
如何使用navicat的数据库结构对比同步功能?(图11-5)

软件进行对比之后,会出现对应的范围,分别是修改的、删除、添加的。但是这些并不是我们最终的答案,我们需要分别查看这具体的信息。

确定最终的sql范围

对于数据表修改的情况,我们可以打开箭头,查看具体信息。如果字段名都全部相等,而仅仅是最后的tableinfo不相等的话,这样的表,我们可能并不需要更新。 因为可能仅仅是两边的数据不一致罢了。(表现为起始id不一致),否则,我们可能需要更新。

如何使用navicat的数据库结构对比同步功能? - 006
如何使用navicat的数据库结构对比同步功能?(图11-6)

如何使用navicat的数据库结构对比同步功能? - 007
如何使用navicat的数据库结构对比同步功能?(图11-7)

如何使用navicat的数据库结构对比同步功能? - 008
如何使用navicat的数据库结构对比同步功能?(图11-8)

这里要注意切换到上图中的Deployment Script选项卡,这里的sql语句,就是最终要执行的升级语句,很容易直观的说明问题,便于你判断是否做对应的升级。

而对于删除的情况,因为local中的新增表是我自定义的,所以,我们并不允许删除。而remote新增的表,我们需要同步到local。基本上就这几条规则,就可以确定这sql的范围了。

查看具体的更新sql语句

在确定好sql范围后,我们点击deploy按钮,就可以看到具体的sql语句了。我们需要把这个语句保存下来,作为最终到服务器上面更新的sql。

注意:在这里的sql文本中,我们需要把所有的 local. 的字样,替换为空,才能更加适应其他服务器。原因你懂的。

然后我们再点击execute按钮,就在本地应用这些sql了,应用的结果是作用在local上的。当然,在最终的操作界面中,我们还可以使用按钮recompare再次进行对比。

如何使用navicat的数据库结构对比同步功能? - 009
如何使用navicat的数据库结构对比同步功能?(图11-9)

如何使用navicat的数据库结构对比同步功能? - 010
如何使用navicat的数据库结构对比同步功能?(图11-10)

如何使用navicat的数据库结构对比同步功能? - 011
如何使用navicat的数据库结构对比同步功能?(图11-11)

最后总结

navicat的数据库结构对比功能,功能非常非常实用,建议大家都掌握这个功能。当然除了结构对比外,还有个结构和数据一同对比的功能,如果您需要,也可以使用。操作流程基本类似。

文中所提及的cmswing的线上地址是: http://www.cmswing.com/ 。是个基于thinkjs(node)的开源cms系统。很新的开源,不过作者很负责,代码写的很好。建议大家学习一下。

本次navicat操作的数据库是mysql,您还可以通过下面的链接,继续关注苏南大叔的mysql相关文章。https://newsn.net/tag/mysql/

 【源码】代码片段及相关软件点此获取

 【navicat】秘籍文章入口,仅传授于有缘之人   navicat    mysql

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!