Php Laravel 5.2外键错误

Php Laravel 5.2外键错误,php,mysql,database,laravel,laravel-5.2,Php,Mysql,Database,Laravel,Laravel 5.2,我用Jeffrey Way Generator为Laravel 5创建了两个迁移。即:php artisan make:migrate:schema create_roles\u table--schema='name:string,description:text'和php artisan make:migrate:pivot user role 现在,我的MySQL数据库默认为InnoDB,我读到的应该是。我还将外键设置移到了Schema::table(),而不是Schema::create

我用Jeffrey Way Generator为Laravel 5创建了两个迁移。即:
php artisan make:migrate:schema create_roles\u table--schema='name:string,description:text'
php artisan make:migrate:pivot user role

现在,我的MySQL数据库默认为
InnoDB
,我读到的应该是。我还将外键设置移到了
Schema::table()
,而不是
Schema::create('role\u user')
。我的迁移应该没有任何问题,但它们会出现以下错误:
一般错误:1215无法添加外键约束(SQL:alter table role\U user add constraint role\U user\U id\U外键(user\U id)引用delete cascade上的user(id)


我已经调用了
$table->engine='InnoDB'在每次迁移中。我还将所有
id
列设置为
unsigned
,即使它们已经是这样了。我不知道是谁帮了我的忙。

检查您是否已经迁移了表用户和角色。否则,您将无法创建外键。还要检查您的迁移顺序。如果您在用户和角色之前迁移此文件,它将失败。

显然,这是一个巨大的错误<例如,代码>用户
而不是
用户
。我本来希望Laravel能做到这一点,但不幸的是,Laravel和我都没有做到。

这可能与您的SQL引擎有关,请检查您的引擎(mariadb,mysql,…)
然后阅读引擎中有关外键的文档


快速解决方案
删除删除('cascade')并运行迁移。

您可以稍后从phpMyAdmin手动添加它

顺序似乎正确:-用户-角色-角色\用户透视表-外键。我还删除了所有表并重新运行了所有迁移。
Schema::create('role_user', function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table->integer('role_id')->unsigned()->index();
            $table->integer('user_id')->unsigned()->index();
            $table->primary(['role_id', 'user_id']);
        });

        Schema::table('role_user', function(Blueprint $table){
            $table->foreign('user_id')->references('id')->on('user')->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('role')->onDelete('cascade');
        });