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

Php Laravel 5.2迁移:无法添加char数据类型的外键,php,mysql,laravel,laravel-migrations,Php,Mysql,Laravel,Laravel Migrations,我正在尝试创建char数据类型的可空外键。当我运行migrate命令时。我得到以下错误。我不确定我哪里做错了 [Illumb\Database\QueryException]SQLSTATE[HY000]:一般错误: 1215无法添加外键约束(SQL:alter tablelevelsadd 约束levels\u sample\u type\u id\u foreign外键 (sample\u type\u id)引用sample\u type(id) [PDOException]SQLSTAT

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

[Illumb\Database\QueryException]SQLSTATE[HY000]:一般错误: 1215无法添加外键约束(SQL:alter table
levels
add 约束
levels\u sample\u type\u id\u foreign
外键 (
sample\u type\u id
)引用
sample\u type
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');
    });
}
样本_类型表如下所示

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

如果引用的表尚不存在,则外键语句将失败。在
级别
迁移文件中引用表之前,请确保创建了
样本类型
表。

样本类型.id列是什么类型?我认为两者必须是同一类型。因此,
sample\u type\u id
不能为空。
sample\u types
是在
levels
之前创建的?@miken32,你说得对。表级别是在样本类型之前创建的。我现在能够生成外键,没有任何问题。非常感谢。你能补充一下这个评论作为回答吗?