微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/php/135700.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐