Laravel 5.2迁移:无法添加char数据类型的外键

时间:2016-07-18 22:22:19

标签: php mysql laravel-5.2 laravel-migrations

我正在尝试创建一个可以为空的char数据类型的外键。当我运行migrate命令时。我收到以下错误。我不确定,我做错了。

  

[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般错误:   1215无法添加外键约束(SQL:alter table levels add   约束levels_sample_type_id_foreign外键   (sample_type_id)引用sample_typesid))

     

[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');
    });
}

1 个答案:

答案 0 :(得分:2)

如果引用的表尚不存在,则外键语句将失败。确保在sample_types迁移文件中引用levels表之前创建<input name="Quantity" type="number" step="1" min="0" class="form-control"> 表。