Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL数据库上使用版本控制(Git)_Mysql_Git_Version Control - Fatal编程技术网

在MySQL数据库上使用版本控制(Git)

在MySQL数据库上使用版本控制(Git),mysql,git,version-control,Mysql,Git,Version Control,我是一名WordPress设计师/开发人员,越来越多地参与到版本控制的使用中,尤其是Git,尽管我确实在一些项目中使用SVN。我目前正在使用Beanstalk进行远程回购 将所有WordPress文件添加到我的repo中是没有问题的,如果我想知道的话,我可以忽略wp配置文件,但是由于我是目前唯一的开发人员,而且这些项目都是封闭源代码的,这真的没有什么意义 WordPress和任何CMS一样,严重依赖数据库来保存文本内容,许多设置取决于我使用的特定插件/主题配置。我想知道在数据库上使用版本控制的最

我是一名WordPress设计师/开发人员,越来越多地参与到版本控制的使用中,尤其是Git,尽管我确实在一些项目中使用SVN。我目前正在使用Beanstalk进行远程回购

将所有WordPress文件添加到我的repo中是没有问题的,如果我想知道的话,我可以忽略wp配置文件,但是由于我是目前唯一的开发人员,而且这些项目都是封闭源代码的,这真的没有什么意义

WordPress和任何CMS一样,严重依赖数据库来保存文本内容,许多设置取决于我使用的特定插件/主题配置。我想知道在数据库上使用版本控制的最佳方式是什么,如果可能的话。我想我可以做一个SQL转储,尽管我的MySQL服务器在Windows上运行(读作:我不知道如何做),然后将SQL转储添加到我的存储库中。但是,当我推动一些活动时,这会造成巨大的安全威胁


有一种公认的做法吗?

您可以在git存储库中备份数据库。当然,如果您将数据以二进制形式放入git中,您将失去git使用diff(更改)高效存储数据的所有能力。因此,首要的最佳实践是:以文本序列化格式存储数据

mysqldump是一个合适的程序来帮助您实现这一点。但它并不完美。如果有任何东西干扰了项目的序列化顺序(例如,由于创建新表等),则会出现人为中断,从而降低存储效率。您可以编写一个定制的序列化程序来序列化更改,但这样您就完成了git已经擅长的艰苦工作。只需使用sql转储即可

也就是说,当开发人员谈论将数据库放在git中时,您想要做的并不是他们通常的意思。例如,如果您阅读@eggyal()发布的链接,您将看到git中实际放置的是生成初始数据库所需的脚本。可能还有其他脚本,比如用干净状态填充数据库数据,或者用测试数据填充数据库数据。所有这些sql脚本都是文本文件,格式与从mysqldump获得的sql转储几乎相同。因此,您没有理由不能以这种方式处理日常数据。

这篇文章给出了如何使用Mercurial在WordPress博客的两个实例(开发、生产)之间自动同步的建议。Is提到,对于这个场景,Git和Mercurial非常相似

第4步(同步数据库)在这里很有趣

数据库内容将导出到版本控制跟踪的文件中。每次拉取更改时,数据库内容都将被此文件替换,使数据库保持最新状态

然后,详细介绍了冲突和作业的脚本部分


如果您不熟悉的话,这里有一个新的版本控制数据库。

像MySQL和MongoDB这样的版本控制数据库可用的软件不多


但其中一个正在开发中,测试版即将推出。查看

注意Wordpress将所有新闻提要内容存储在数据库中,因此即使您不做任何更改,也会有很多更改内容。

如果您只对版本控制下的架构更改感兴趣,那么有一个很好的方法。它将模式提取到可以放在git下的项目文件中。

我转储数据库并将其签入版本控制。但我不会在Wordpress项目上推送到服务器(git在共享主机上并不总是可用)。所以一般我都是通过FTP手动上传的,就这么糟糕。有兴趣了解使用git部署时的一些正确做法。此外,您可以将数据库签入
develop
分支,并使用该技术排除数据库被合并到
master
中。然后仅从
master
部署。理论上,这应该是可行的。我在谷歌上快速搜索了“Wordpress版本控制”,找到了Wordpress插件列表:它们中有没有有用的插件?对于大多数企业应用程序来说,将生成数据库所需的脚本置于版本控制之下就是所需要的。但是对于像WordPress这样的内容管理系统,数据库中的许多内容实际上是代码和配置,而不是最终用户数据。代码和配置需要受版本控制,即使它们作为数据存储在SQL表的行中。WordPress对你来说并不容易。@Catcall我同意。当我说一些sql脚本可能会用干净的初始状态填充数据库时,这就是我所说的。如果您想根据一些预配置状态快速部署多个wordpress站点,例如使用所需插件的首选初始配置等,那么所描述的策略将非常有效。那么自动提交呢?