我正在尝试创建一个可以为空的char数据类型的外键。当我运行migrate命令时。我收到以下错误。我不确定,我做错了。
[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般错误: 1215无法添加外键约束(SQL:alter table
levels
add 约束levels_sample_type_id_foreign
外键 (sample_type_id
)引用sample_types
(id
))[PDOException] SQLSTATE [HY000]:常规错误:1215无法添加外部 关键约束
以下是级别表
的迁移文件内容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_types表如下
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');
});
}
答案 0 :(得分:2)
如果引用的表尚不存在,则外键语句将失败。确保在sample_types
迁移文件中引用levels
表之前创建<input name="Quantity" type="number" step="1" min="0" class="form-control">
表。