Php 拉威尔5号迁移出了问题

Php 拉威尔5号迁移出了问题,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我使用php artisan make创建了一个新的迁移:migration-table=my_table,并继续为现有表创建一个新列。该列应该是唯一的索引,但我忘了将其设置为可空,因此,php artisan migrate失败,因为多行将有一个重复的条目,该条目将是一个空字符串 到目前为止,合乎逻辑的方法是向列中添加nullable并重新运行迁移。但是由于新列已经存在于表中,所以在添加唯一键时迁移失败,但是列创建成功,我必须先删除它 我的第一个想法是运行php artisan migrate

我使用php artisan make创建了一个新的迁移:migration-table=my_table,并继续为现有表创建一个新列。该列应该是唯一的索引,但我忘了将其设置为可空,因此,php artisan migrate失败,因为多行将有一个重复的条目,该条目将是一个空字符串

到目前为止,合乎逻辑的方法是向列中添加nullable并重新运行迁移。但是由于新列已经存在于表中,所以在添加唯一键时迁移失败,但是列创建成功,我必须先删除它

我的第一个想法是运行php artisan migrate:rollback,但它执行了以前的迁移,而不是我刚刚创建的迁移


到目前为止,正确的方法是什么?我应该登录到数据库cli并手动编写查询,还是laravel提供了一种通过php artisan处理此问题的方法?

我确实认为您可以修改表的原始迁移并添加可为空的,但您需要在旧迁移上执行此操作。正如您所注意到的,新迁移只会对现有表应用补丁

修改迁移后,可以再次回滚和转发。当然,您需要小心处理数据,以防需要检查

您还可以使用php artisan migrate:refresh,这将删除所有表和数据,因此请务必小心,但它应该使用新结构重新创建表

试试这个:

 php artisan migrate:rollback --table=table_name_here

应用程序是在开发环境中还是在生产环境中?它正在开发中,但我不想迁移:刷新,因为在某个时候我必须迁移到生产环境中,而我不能在产品上这样做迁移是成批完成的,存储在迁移表中。不能像这样回滚单个表。见穆西奥的回答。