使版本之间的代码,数据库结构和数据库数据保持同步

时间:2018-08-02 07:53:43

标签: php mysql laravel-5

这个问题困扰了我一段时间,对于Google来说似乎是一个棘手的问题。

我正在寻找最好的方法(或至少是一种体面的方法),以使我的代码,数据库结构和数据库数据彼此保持同步。我目前正在使用Laravel 5,它为我提供了迁移和种子。第一个非常适合数据库结构更改。后者似乎还可以,但无需花费时间。

因此,我有几个月前设置的这个laravel安装。它有20多个表和一些种子文件。 现在,我在现有表结构中重命名了一个列。

当我从头开始创建Laravel站点时,显然我首先运行了迁移,否则根本没有表。之后,我运行我的种子,并在针对已更改的列的插入查询中失败。

问题出现了:播种者难道不应该随时间迁移吗?还是应该在更改数据库结构时更改所有种子?必须有更好的方法,我是否缺少某些东西?应该怎么做?

1 个答案:

答案 0 :(得分:0)

种子的问题在于需要更新它们以反映当前模式,而不是它们在生产时与之相关的任何历史模式。

因此,通常最好将种子绝对减至最少。如果不可避免地需要一个干净的种子数据库,则可以为需要从事该项目的任何人提供。种子数据库的风险在于它可能包含迁移中没有的修改,例如删除迁移或应用迁移时,您永远不会提交代码。

理想情况下,您的项目应该通过运行迁移并从种子构建而从头开始工作,您应该间歇地测试该过程,以确保您没有破坏任何东西。