Php 在Laravel上,我得到错误errno:150“;“外键约束格式不正确”;

Php 在Laravel上,我得到错误errno:150“;“外键约束格式不正确”;,php,laravel,Php,Laravel,我是拉威尔的新手,在迁移方面遇到了一些问题 表名的拼写是准确的,但我仍然得到错误 错误状态 SQLSTATE[HY000]:一般错误:1005无法创建表 first_db\sql-41c_2f(错误号:150“外键约束为 格式不正确”)(SQL:alter tablefeesadd约束 fees\u academic\u id\u foreign外键(academic\u id)参考 学术(学术id) 错误指向下面的此文件: Schema::create('fees', function (Bl

我是拉威尔的新手,在迁移方面遇到了一些问题

表名的拼写是准确的,但我仍然得到错误

错误状态

SQLSTATE[HY000]:一般错误:1005无法创建表
first_db
\sql-41c_2f
(错误号:150“外键约束为 格式不正确”)(SQL:alter table
fees
add约束
fees\u academic\u id\u foreign
外键(
academic\u id
)参考
学术
学术id

错误指向下面的此文件:

Schema::create('fees', function (Blueprint $table) {
    $table->increments('fee_id');
    $table->integer('academic_id')->unsigned;
    $table->integer('level_id')->unsigned;
    $table->integer('fee_type_id')->unsigned;
    $table->string('fee_heading',200)->nullable;
    $table->float('amount', 8, 2);
    $table->foreign('academic_id')->references('academic_id')->on('academics');
    $table->foreign('level_id')->references('level_id')->on('levels');
    $table->foreign('fee_type_id')->references('fee_type_id')->on('feestype');
});

有什么我做错了吗?

unsigned应该是一个函数:

$table->integer('academic_id')->unsigned();

此外部列应未签名

Schema::create('fees', function (Blueprint $table) {
    $table->increments('fee_id');
    $table->unsignedInteger('academic_id');
    $table->unsignedInteger('level_id');
    $table->unsignedInteger('fee_type_id');
    $table->string('fee_heading',200)->nullable();
    $table->float('amount', 8, 2);

    $table->foreign('academic_id')->references('academic_id')->on('academics');
    $table->foreign('level_id')->references('level_id')->on('levels');
    $table->foreign('fee_type_id')->references('fee_type_id')->on('feestype');
});

来源:

它看起来像是
academical\u id
的约束抛出了这个。可能是
academics
表不存在,没有该字段,有该字段,但定义不同(char,signed int,诸如此类)或诸如此类?外键列和引用列必须是相同的数据类型,并且在迁移中
$table->integer('academical_id')->unsigned()
像这样使用无符号引用: