两张表数据迁移的时候外键约束没执行是怎么回事?

从表约束了外键,但是迁移的时候没有执行外键这行名令,表添加成功了,也没报错,就是外键没有设置成功。
主表:
Schema::create('warestocks', function (Blueprint $table) {

        $table->increments('id');
        $table->string('username')->comment('用户名');
        $table->integer('uid')->comment('用户id');
        $table->timestamps();
    });

从表:
Schema::create('warestock_goods', function (Blueprint $table) {

        $table->increments('id');
        $table->string('name')->comment('产品名称');
        $table->integer('good_id')->comment('产品名称');
        $table->integer('num')->default(0)->comment('产品数量');
        $table->integer('warestock_id')->unsigned()->comment('申请id');

        $table->foreign('warestock_id')
            ->references('id')
            ->on('warestocks')
            ->onDelete('cascade');
        $table->timestamps();
    });
JellyBool

就是外键没有设置成功

你怎么看出没有添加外键?

yujiak 回复 JellyBool

不过这貌似是本地环境的问题,找不到原因,上传到服务器再migrate就没问题…

yujiak

数据库创建后用Navicat 查看表结构,只看到有创建了索引,外键没有创建

perfectboook

看下你的数据库使用的是不是 Innodb 引擎,之前有同事碰到过这样的问题,他默认创建的都是 myisam 引擎的。需要在 migration 里面显示指定使用 Innodb 引擎。

$table->engine = 'InnoDB';
yujiak 回复 perfectboook

谢谢-,还真是这个原因!