Laravel 5.2 迁移:无法添加 char 数据类型的外键
Laravel 5.2 Migration: Cannot add foreign key of char data type
我正在尝试创建一个 char 数据类型的可为 null 的外键。当我 运行 迁移命令时。我收到以下错误。我不确定,我哪里做错了。
[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error:
1215 Cannot add foreign key constraint (SQL: alter table levels
add
constraint levels_sample_type_id_foreign
foreign key
(sample_type_id
) references sample_types
(id
))
[PDOException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign
key constraint
这是关卡table
的迁移文件内容
public function up()
{
Schema::create('levels', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->char('id', 36)->unique();
$table->string('description')->nullable();
$table->char('sample_type_id', 36)->nullable();
$table->integer('order');
$table->timestamps();
$table->primary('id');
$table->foreign('sample_type_id')->references('id')->on('sample_types');
});
}
和sample_typestable如下
public function up()
{
Schema::create('sample_types', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->char('id', 36)->unique();
$table->string('name');
$table->timestamps();
$table->primary('id');
});
}
如果引用的 table 不存在,外键语句将失败。确保在 levels
迁移文件中引用它之前创建 sample_types
table。
我正在尝试创建一个 char 数据类型的可为 null 的外键。当我 运行 迁移命令时。我收到以下错误。我不确定,我哪里做错了。
[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table
levels
add constraintlevels_sample_type_id_foreign
foreign key (sample_type_id
) referencessample_types
(id
))[PDOException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
这是关卡table
的迁移文件内容public function up()
{
Schema::create('levels', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->char('id', 36)->unique();
$table->string('description')->nullable();
$table->char('sample_type_id', 36)->nullable();
$table->integer('order');
$table->timestamps();
$table->primary('id');
$table->foreign('sample_type_id')->references('id')->on('sample_types');
});
}
和sample_typestable如下
public function up()
{
Schema::create('sample_types', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->char('id', 36)->unique();
$table->string('name');
$table->timestamps();
$table->primary('id');
});
}
如果引用的 table 不存在,外键语句将失败。确保在 levels
迁移文件中引用它之前创建 sample_types
table。