php - Laravel 5 迁移出错

标签 php mysql laravel laravel-5

我使用 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/

相关文章:

php - 为什么 php-fpm 会忽略为补充组定义的权限?

mysql - ruby rails : how can we execute activerecord query stored in database?

php - 如何利用 StorageFacade 的 Filesystem 类的 glob 方法?

php - 忽略重音字符 Eloquent 查询

laravel - 分页计数(*)查询问题

php - 使用 Eloquent 查询进行 Laravel 日期分组

php - Kubernetes命名空间Env header

php - 在动态创建的选择菜单上运行 js 函数

mysql - 如何通过检查另一个表来排除一些数据库记录

mysql - 将值插入相关表的 SQL 命令