Php Laravel 5.2迁移:无法添加char数据类型的外键
我正在尝试创建char数据类型的可空外键。当我运行migrate命令时。我得到以下错误。我不确定我哪里做错了 [Illumb\Database\QueryException]SQLSTATE[HY000]:一般错误: 1215无法添加外键约束(SQL:alter tablePhp 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
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,你说得对。表级别是在样本类型之前创建的。我现在能够生成外键,没有任何问题。非常感谢。你能补充一下这个评论作为回答吗?