我们目前正在审查如何在subversion中存储我们的数据库脚本(表,过程,函数,视图,数据修复),我想知道对于什么是最佳方法是否有任何共识?
我们需要考虑的一些因素包括:
显然这是一个非常开放的问题,所以我很想知道人们的经历教给他们什么.
我已经开始使用git和一个小型开发团队来进行不同的项目; 它工作得很好,直到我们开始使用Wordpress.因为Wordpress在MySQL中存储了很多配置,所以我们决定在提交中包含它.
这很好用(在预提交时使用msyql dump,并在post-checkout上将转储的文件推送到mysql),直到两个人对插件进行修改并提交,然后一切都再次破坏.
我看过我能找到的每一个解决方案,并认为Liquibase是最接近的选择,但对我们不起作用.它要求您在XML中指定模式,这实际上是不可能的,因为我们使用的插件会自动将数据/表/修改插入到数据库中.
我计划在几天内给它一个赏金,看看是否有人有以下的"金发女郎解决方案":
问题:
是否有一种方法可以在语义上对MySQL数据库进行版本控制(不使用diffs EDIT:意味着它不仅仅采用两个版本并对其进行区分,而是记录按顺序运行的实际查询以从旧版本获取在没有开发人员编写的模式文件的要求的情况下,可以使用git进行合并.
我知道我不可能是唯一一个有这样问题的人,但希望有人有解决方案吗?
我的办公室一直在谈论创建一个版本控制mysql数据(而不是模式/迁移)的软件包.
基本上这个过程会像这样工作.请记住,客户端仍然像往常一样使用后端,然后像使用wordpress后端一样使用它.客户端将登录选择一个"分支"给它一个名称让我们说"新用户"这将克隆一个全新的数据库,允许用户在那里工作"分支"而不影响实时.一旦客户端完成数据更改,他们就会将数据分支合并到"主"(实时)中.
在合并时,它会将实时和"新用户"分支数据导出到sql文件并执行svn diff并合并更改.
引发这种想法的情况是,如果我们的客户需要对网站进行一系列更改,但不想将这些数据置于实际状态,并且当他们进行更改时,他们也不希望影响其他同事网站更改.基本上复制了开发人员在Git等存储库中工作时所做的事情.
此外,如果客户端在开发/演示站点上工作,他们希望将他们的工作放在现场.
我想开启讨论,以了解这是否是一个好主意?我们可能会遇到什么问题?在处理数据时,这是一个很好的编程实践吗?这样的事情已经存在吗?