我使用 php artisan make:migration --table=my_table
创建了一个新迁移,并继续为现有表创建一个新列。所述列应该是一个唯一索引
,但我忘了让它可以为空,因此,php artisan migrate
失败了,因为多行会有重复的条目(这将是一个空字符串 ''
)
到目前为止,合乎逻辑的方法是将 nullable
添加到列并重新运行迁移。但是由于新列已经存在于表中(添加唯一键时迁移失败,但列创建成功)我必须先删除它。
我的第一个想法是运行 php artisan migrate:rollback
但它执行的是之前的迁移,而不是我刚刚创建的迁移。
到目前为止,正确的做法是什么?我应该登录到数据库 cli 并手动编写查询,还是 laravel 提供一种通过 php artisan
来处理这个问题的方法?
最佳答案
我确实认为您可以修改表的原始迁移并添加 nullable
,但您需要在旧迁移上执行此操作。正如您所注意到的,新迁移只会对现有表应用补丁。
修改迁移后,您可以再次回滚和转发。当然,您需要小心处理您的数据(如果您需要它们,请检查 Database Seeding。
您还可以使用 php artisan migrate:refresh
这将删除所有表和数据(所以要非常小心),但它应该会使用新结构重新创建您的表。
关于php - Laravel 5 迁移出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30141222/