【发布时间】:2019-12-30 06:38:45
【问题描述】:
背景
我们从一开始就在我们的一个项目中使用 Laravel (5.8) 迁移。在开发过程中,我们进行了一些迁移。一段时间后,我们发现,一些迁移与设置/配置有关。所以我们通过重命名迁移文件来向上移动它们,例如:
2019_08_05_104213_create_financial_years_table
到
2016_08_31_104213_create_financial_years_table
在那之后,我们继续前进,在某个阶段我们制作了更多的迁移文件,然后运行php artisan migrate。但它出现了错误:
基表或视图已存在:...表“financial_years”已存在
因此,我们尝试删除基表(在本例中为:financial_years),然后也从migrations 表中删除了提及“...financial_years...”的行。
但是php artisan migrate 一次又一次地出现同样的错误。我们检查了整个数据库,但没有找到index 或financial_years 的表。
已知的补救措施,但是
我们知道,我们可以运行 php artisan migrate:refresh 进行新的迁移。但是我们数据库中的数据很重要,我们现在不想弄乱数据。我们可能会在何时进行生产时进行新的迁移,但不是现在。
在这种情况下我们如何进行 Laravel 迁移?
【问题讨论】:
-
一旦迁移在生产环境中运行,您就应该永远更改迁移(无论是名称、功能等等)。您对迁移的重新排序似乎没有改变任何东西(比如添加一些必需的外键或其他什么),所以无论如何重新排序它们是没有用的。尤其是把他们追溯到 3 年前...
-
是的,这绝对是“从不做”的事情。它是你的历史,如果你打破你的历史,各种可怕的事情就会开始发生。
标签: php laravel laravel-5.8 laravel-migrations artisan-migrate