播种时找不到表
Posted
技术标签:
【中文标题】播种时找不到表【英文标题】:Table not found when seeding 【发布时间】:2017-07-09 11:09:21 【问题描述】:以下是我的迁移
用户表与客户表有关系
在用户中:
$table->integer('customer_id')->unsigned();
$table->foreign('customer_id')->references('id')->on('customers');
当我打电话给php artisan migrate:refresh --seed
时,工匠给了我以下错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL
: alter table `users` add constraint `users_customer_id_foreign` foreign ke
y (`customer_id`) references `customers` (`id`))
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
因为customers表不存在...(很明显)
有没有办法解决这个问题?我知道更改文件的日期可以解决这个问题,但应该有更好的方法
【问题讨论】:
重命名customers
表迁移文件,使其出现在users
表迁移文件之前。现在删除数据库并运行您的命令。
【参考方案1】:
在添加外键之前,您必须创建要引用的表。一个解决方案是从您的用户表迁移中删除外键约束并创建一个添加外键约束的新迁移。
【讨论】:
【参考方案2】:尝试单独制作。
public function up()
Schema::create('users', function(Blueprint $table)
$table->increments('id');
$table->integer('costumer_id')->unsigned();
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
);
Schema::table('users', function($table)
$table->foreign('costumer_id')->references('id')->on('costumers');
);
您可以尝试的另一件事(自 laravel 5.3 起):
unsignedInteger('column_name') instead of ('column_name')-unsigned()
【讨论】:
【参考方案3】:如果您将一个字段设置为“无符号”,而另一个则没有。一旦你应该将两列都设置为无符号,它就可以工作。
【讨论】:
以上是关于播种时找不到表的主要内容,如果未能解决你的问题,请参考以下文章