【发布时间】:2020-03-19 15:05:10
【问题描述】:
我正在使用 Laravel 6。我想运行我的迁移文件,但在迁移我的“create_users_table”文件期间出现以下错误:
SQLSTATE[HY000]: General error: 1005 Can't create tab
le `thenewmeetingapp`.`#sql-f3c_b8` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table
`users` add constraint `users_permission_id_foreign` foreign key (`permission_id`) references `permissions` (`id`))
我认为错误出现在“users”表和“permissions”表之间(每个用户都必须有一个权限,每个权限都可以有很多用户)。 然而,表“users”甚至与表“meeting_user”相关,该表是与表“meetings”连接的表。
用户:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('surname');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('username')->unique();
$table->string('password');
$table->bigInteger('permission_id')->unsigned();
$table->enum('is_active', array(0, 1))->default(1);
$table->rememberToken();
$table->timestamps();
$table->foreign('permission_id')->references('id')->on('permissions');
});
权限:
Schema::create('permissions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
meeting_user:
Schema::create('meeting_user', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('meeting_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('meeting_id')->references('id')->on('meetings')->onDelete('cascade');
});
用户表的迁移是要运行的第一个迁移。但是,我也尝试在迁移权限表之前和用户表之后运行,但没有任何改变。错误是一样的。 有人可以帮助我吗?
【问题讨论】:
-
您的第二个表
permissions是否有其id字段,它是一个身份字段吗? -
好的,您必须首先运行
permissions迁移,其次是users迁移,然后是meetings,最后是meeting_user。请注意,您可以更改顺序,更改文件名上的时间戳,并在运行迁移之前运行composer dump-autoload -
我尝试先使用命令
php artisan migrate --path=/database/migrations/test/运行权限迁移,但没有成功...我只创建了迁移表。随着您的技术更改时间戳,因此它可以正常工作。非常感谢。
标签: laravel database-migration