数据库版本控制和部署的解决方案?

时间:2014-02-14 作者:Jacob Dorman

目前,我使用转储脚本并将数据库提交到git repo。--skip-extended-insert --skip-comments --skip-dump-date 这意味着差异可以让我公平地了解发生了什么变化,但如果我尝试合并,一切都会失败。

WP\\u SITEURL、WP\\u HOME和wordpress存储完整URL的所有其他位置在导入到其他主机(测试、暂存、生产)时需要更新

有人在用更好的方法吗?

Main issues:

  • 许多其他非相关记录更改了自动增量值(我只是去掉了这些,但遇到了ID问题)
  • 时间戳(也可能去掉)
  • 瞬态记录。。。不知道如何处理它们,理想的做法是创建时间戳迁移的过程,只添加或删除内容。。。但我不确定这是否可能?

    2 个回复
    最合适的回答,由SO网友:Víctor López García 整理而成

    以下是两种可能的解决方案,它们实际上都是通用的MySQL版本控制工具,但可以根据您的工作流进行调整:

    dbv.php

    此工具根据在数据库上检测到的更改创建“迁移”,基本上是SQL脚本。这些脚本存储在本地目录中,因此可以提交给当前的VCS(例如git)。

    它通过PHP web界面使用。

    DBVC

    与前面的工具基本相似,它基于命令行界面。它是通过json文件配置的。主要区别在于它不会自动生成迁移文件。

    有一个悬而未决的问题需要将此与之前的类似内容集成,因此这是需要寻找的。

    Wordpress Plugins

    可以帮助创建可重复工作流的一些插件:

    SO网友:David Silva Smith

    我在MYSQL上做这个。

    它将所有的表模式和数据放入它们自己的文件中,这样我就可以很容易地看到发生了什么变化。

    与此线程中的大多数其他解决方案不同,此解决方案获取数据,这对于CMS很重要。

    此解决方案不使用任何工具,只使用命令行脚本。

    edit: 我发现我以前的代码有一个bug,导入顺序很重要。取下--compact flag修复了错误。

    for x in `mysql --skip-column-names -u root -ppassword dbname -e \'show tables;\'`; do
         echo exporting $x
         mysqldump -u root -ppassword --skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset --extended-insert=FALSE --replace --skip-dump-date dbname $x > "./db/$x.sql"
    done
    
    旧代码

    for x in `mysql --skip-column-names -u root -ppassword dbname -e \'show tables;\'`; do
         mysqldump -u root -ppassword --compact --extended-insert=FALSE --replace dbname $x > "./db/$x.sql"
    done
    
    下面是如何导入

    for x in `ls ./db/*.sql`; do
         echo importing $x
         mysql -pdbpassword dbname --force < $x
    done
    

    结束

    相关推荐

    Database create or redirect

    我在ABC网站工作。com,我只能访问根文件夹。我计划安装wordpress。我需要以某种方式创建一个没有任何cPanel的数据库。或者,我想到的第二个选择是,如果我可以在服务器A中安装wordpress,在那里我只能访问根文件夹,并使用另一台服务器B中的数据库,我可以通过cPanel完全控制该数据库。我已经在服务器B上创建了一个数据库。但是如何设置它(可能通过wp config.php),以便可以通过域访问它。第三种选择是,如果我可以在服务器B上创建一个站点(DEF.com),那么服务器a上的站点域(A