我使用php artisan make:migration --table=my_table
创建了一个新迁移,然后继续为现有表创建一个新列。所谓的列应该是unique index
,但我忘了让它可以为空,因为这个原因,php artisan migrate
失败了,因为多行会有一个重复的条目(这将是一个空字符串{{1 }})
到目前为止,合理的方法是将''
添加到列中并重新运行迁移。但由于新列已经存在于表中(添加唯一键时迁移失败,但列创建成功)我必须先删除它。
我的第一个想法是运行nullable
,但它执行了之前的迁移,而不是我刚刚创建的迁移。
到目前为止,正确的方法是什么?我应该手动登录数据库cli并编写查询,还是laravel提供一种通过php artisan migrate:rollback
处理此问题的方法?
答案 0 :(得分:0)
我认为您可以修改表格的原始迁移并添加nullable
,但您需要在旧迁移中执行此操作。正如您所注意到的,新迁移只会将补丁应用于现有表。
修改迁移后,您可以再次回滚和转发。当然,您需要小心处理数据(如果需要,请检查Database Seeding。
你也可以使用php artisan migrate:refresh
这将删除所有表格和数据(所以要非常小心),但它应该用新结构重新创建你的表格。
答案 1 :(得分:-2)
试试这个:
php artisan migrate:rollback --table=table_name_here