Table 播种时未找到
Table not found when seeding
下面是我的迁移
用户table与客户有关系table
在用户中:
$table->integer('customer_id')->unsigned();
$table->foreign('customer_id')->references('id')->on('customers');
当我调用 php artisan migrate:refresh --seed
时,artisan 给出了以下错误:
[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
因为客户 table 不存在...(显而易见)
有办法解决这个问题吗?我知道更改文件的日期可以解决这个问题,但应该有更好的方法
尝试单独制作。
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()
您必须在添加外键之前创建您引用的 table。一种解决方案是从您的用户 table 迁移中删除外键约束并创建一个添加外键约束的新迁移。
如果您将一个字段设置为 "Unsigned" 而另一个字段未设置。一旦您将两列都设置为无符号,它就可以工作了。
下面是我的迁移
用户table与客户有关系table
在用户中:
$table->integer('customer_id')->unsigned();
$table->foreign('customer_id')->references('id')->on('customers');
当我调用 php artisan migrate:refresh --seed
时,artisan 给出了以下错误:
[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
因为客户 table 不存在...(显而易见)
有办法解决这个问题吗?我知道更改文件的日期可以解决这个问题,但应该有更好的方法
尝试单独制作。
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()
您必须在添加外键之前创建您引用的 table。一种解决方案是从您的用户 table 迁移中删除外键约束并创建一个添加外键约束的新迁移。
如果您将一个字段设置为 "Unsigned" 而另一个字段未设置。一旦您将两列都设置为无符号,它就可以工作了。