【发布时间】:2016-01-14 14:20:02
【问题描述】:
我使用 Jeffrey Way 生成器为 Laravel 5 创建了两个迁移。即:php artisan make:migrate:schema create_roles_table --schema='name:string, description:text' 和 php artisan make:migrate:pivot user role。
现在,我的 MySQL 数据库默认为 InnoDB,我读过应该是这样。我还将外键设置移动到Schema::table() 而不是Schema::create('role_user')。我的迁移应该没有任何问题,但它们会出错:General error: 1215 Cannot add foreign key constraint (SQL: alter table role_user add constraint role_user_user_id_foreign foreign key (user_id) references user (id) on delete cascade)。
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');
});
我在每次迁移中都致电$table->engine = 'InnoDB';。我也将所有id 列设置为unsigned,即使它们已经是这样了。我一无所知,谁帮帮我..
【问题讨论】:
标签: php mysql database laravel laravel-5.2