php – 从版本化mysql schemata开始,没有过度杀伤力.好的解决方案

前端之家收集整理的这篇文章主要介绍了php – 从版本化mysql schemata开始,没有过度杀伤力.好的解决方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经到了这一点,我意识到我必须开始对数据库模式进行版本控制并进行更改.因此,我阅读了有关该主题的SO上的现有帖子,但我不确定如何继续.

我基本上是一个单人公司,不久前我甚至没有使用版本控制代码.我在Windows环境中,使用Aptana(IDE)和SVN(使用Tortoise).我从事PHP / MysqL项目.

版本化数据库模式的有效性和充分性(没有过度杀伤力)是什么?

我在一些项目中确实有一两个自由职业者,但我不希望进行大量的分支和合并.所以基本上我想跟踪我的代码修订的并发模式.

[编辑]瞬间解决方案:目前我决定只要我提交一个标签(稳定版本),我将只创建一个模式转储加上一个必要的初始数据.在目前阶段,这对我来说似乎已经足够了.[/ edit]

[edit2]此外我现在还使用了名为incrementments.sql的第三个文件,其中我将所有更改与日期等相关联,以便在一个文件中轻松跟踪更改历史记录.我不时将更改集成到另外两个文件中并清空increments.ql [/ edit]

小公司的简单方法:将数据库转储到sql并将其添加到存储库.然后每次更改内容时,在转储文件添加更改.

然后,您可以使用diff来查看版本之间的更改,更不用说有解释您的更改的注释.这也将使您几乎免受MysqL升级的影响.

我看到的一个缺点是你必须记住手动将sql添加到dumpfile.你可以训练自己永远记住,但如果你和别人一起工作要小心.错过更新可能会在以后痛苦.

这可以通过创建一些精心设计的脚本来减轻,当你提交到subversion时为你做这件事,但这对于一个人的表演来说有点多了.

编辑:在这个答案之后的那一年里,我不得不为一个小团队实现MysqL的版本控制方案.手动添加每个更改被视为一个麻烦的解决方案,就像在评论中提到的那样,所以我们继续转储数据库并将该文件添加到版本控制中.

我们发现测试数据最终在转储中,并且很难弄清楚改变了什么.这可以通过仅转储模式来解决,但这对我们的项目来说是不可能的,因为我们的应用程序依赖于数据库中的某些数据来运行.最终我们返回手动添加数据库转储的更改.

这不仅是最简单的解决方案,而且还解决MysqL的某些版本在导出/导入时遇到的某些问题.通常我们必须转储开发数据库,​​删除任何测试数据,日志条目等,删除/更改适用的某些名称,然后才能创建生产数据库.通过手动添加更改,我们可以精确控制最终生产中的内容,一次一点,这样最终一切准备就绪,并且尽可能轻松地转移到生产环境.

猜你在找的PHP相关文章