Mysql 错误:外键约束格式不正确

Mysql 错误:外键约束格式不正确,mysql,laravel,Mysql,Laravel,我的HOOFDVRAAGS数据库中有外键错误,但奇怪的是,这与VRAAGS中的外键错误完全相同 SQLSTATE[HY000]:一般错误:1005无法创建表 zonetets#sql-1 e8_2f9(错误号:150“外键约束为 格式不正确”)(SQL:lter表hoofdvraagsadd约束 hoofdvraags\u-toets\u-id\u-foreign键(toets\u-id)参考 toets(id)位于Connection.php第458行: SQLSTATE[HY000]:一般错

我的HOOFDVRAAGS数据库中有外键错误,但奇怪的是,这与VRAAGS中的外键错误完全相同

SQLSTATE[HY000]:一般错误:1005无法创建表
zonetets
#sql-1 e8_2f9
(错误号:150“外键约束为 格式不正确”)(SQL:lter表
hoofdvraags
add约束
hoofdvraags\u-toets\u-id\u-foreign键(
toets\u-id
)参考
toets
id
)位于Connection.php第458行:
SQLSTATE[HY000]:一般错误:1005无法创建表
zonetets
#sql-1 e8_2f9
(错误号:150“外键约束为 格式不正确的“)

我的db迁移到此,希望有人能帮助我。 在此,关系 TOETS1--->NHOOFDVRAAGS1--->NVRAAGS

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateToetsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('toets', function (Blueprint $table) {
            $table->increments('id');
            $table->string('toetscode');
            $table->string('jaargang');
            $table->string('vak')->default('wiskunde');
            $table->string('hoofdstuk');
            $table->string('hoofdstuktitel');
            $table->string('maker');
            $table->string('datumgemaakt');   
            $table->integer('volgnummerToets')->default(1);     
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('toets');
    }
}
public function hoofdvraag()
    {
        return $this->hasMany(Hoofdvraag::class);
    }
HOOFDVRAAGS

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateHoofdvraagsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('hoofdvraags', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('toets_id')->unsigned();
            $table->string('titel');
            $table->string('tekst');
            $table->string('bestandsnaam');
            $table->integer('volgnummerHoofdvraag')->default(99);             
            $table->timestamps();

            $table->foreign('toets_id')
                -> references('id')
                -> on('toets')
                -> onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('hoofdvraags');
    }
}
型号HOOFDVRAAG

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSubvraagsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('subvraags', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('hoofdvraag_id')->unsigned();
            $table->string('vraag');
            $table->string('antwoord');
            $table->integer('punten');
            $table->string('bestandsnaam');
            $table->integer('volgnummerSubvraag')->default(1);
            $table->timestamps();

            $table->foreign('hoofdvraag_id')
                -> references('id')
                -> on('hoofdvraags')
                -> onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('subvraags');
    }
}
public function subvraag()
    {
        return $this->hasMany(Subvraag::class);
    }

    public function toets() {
        return $this->belongsTo(Toets::class);
    }
public function hoofdvraag() {
        return $this->belongsTo(Hoofdvraag::class);
    }
型号SUBVRAAG

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSubvraagsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('subvraags', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('hoofdvraag_id')->unsigned();
            $table->string('vraag');
            $table->string('antwoord');
            $table->integer('punten');
            $table->string('bestandsnaam');
            $table->integer('volgnummerSubvraag')->default(1);
            $table->timestamps();

            $table->foreign('hoofdvraag_id')
                -> references('id')
                -> on('hoofdvraags')
                -> onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('subvraags');
    }
}
public function subvraag()
    {
        return $this->hasMany(Subvraag::class);
    }

    public function toets() {
        return $this->belongsTo(Toets::class);
    }
public function hoofdvraag() {
        return $this->belongsTo(Hoofdvraag::class);
    }

正如我所知,如果您在模型中创建了一个有说服力的关系,那么您为什么要在迁移中创建外键,您所需要的就是为它创建一个列


这是执行顺序吗?您需要确保创建
toets
,然后创建
hoofdvraags
然后创建
subvraags
。您还可以对表名使用普通的复数形式,只需定义
protected$table='hoodvragen'在您的modelFlame中,谢谢我已经更改了执行顺序,现在没有任何错误,非常感谢!我是拉威尔的新手,我想你可能是对的,但问题已经为我解决了,但稍后我会更仔细地看一看。谢谢