我基本上是一个单人公司,不久前我甚至没有使用版本控制代码.我在Windows环境中,使用Aptana(IDE)和SVN(使用Tortoise).我从事PHP / MysqL项目.
版本化数据库模式的有效性和充分性(没有过度杀伤力)是什么?
我在一些项目中确实有一两个自由职业者,但我不希望进行大量的分支和合并.所以基本上我想跟踪我的代码修订的并发模式.
[编辑]瞬间解决方案:目前我决定只要我提交一个标签(稳定版本),我将只创建一个模式转储加上一个必要的初始数据.在目前阶段,这对我来说似乎已经足够了.[/ edit]
[edit2]此外我现在还使用了名为incrementments.sql的第三个文件,其中我将所有更改与日期等相关联,以便在一个文件中轻松跟踪更改历史记录.我不时将更改集成到另外两个文件中并清空increments.ql [/ edit]
然后,您可以使用diff来查看版本之间的更改,更不用说有解释您的更改的注释.这也将使您几乎免受MysqL升级的影响.
我看到的一个缺点是你必须记住手动将sql添加到dumpfile.你可以训练自己永远记住,但如果你和别人一起工作要小心.错过更新可能会在以后痛苦.
这可以通过创建一些精心设计的脚本来减轻,当你提交到subversion时为你做这件事,但这对于一个人的表演来说有点多了.
编辑:在这个答案之后的那一年里,我不得不为一个小团队实现MysqL的版本控制方案.手动添加每个更改被视为一个麻烦的解决方案,就像在评论中提到的那样,所以我们继续转储数据库并将该文件添加到版本控制中.
我们发现测试数据最终在转储中,并且很难弄清楚改变了什么.这可以通过仅转储模式来解决,但这对我们的项目来说是不可能的,因为我们的应用程序依赖于数据库中的某些数据来运行.最终我们返回手动添加对数据库转储的更改.
这不仅是最简单的解决方案,而且还解决了MysqL的某些版本在导出/导入时遇到的某些问题.通常我们必须转储开发数据库,删除任何测试数据,日志条目等,删除/更改适用的某些名称,然后才能创建生产数据库.通过手动添加更改,我们可以精确控制最终生产中的内容,一次一点,这样最终一切准备就绪,并且尽可能轻松地转移到生产环境.