【发布时间】:2020-08-25 07:38:39
【问题描述】:
我有一个开发人员几乎放弃了一个项目。我有来自服务器的代码,我正试图让它在我的本地环境中运行。我正在尝试让它迁移,但我一直遇到引用问题,我查看了帖子并尝试了从添加 disableForeignKeyConstraints();给作曲家转储自动加载等。但仍然不断得到
SQLSTATE[HY000]:一般错误:3780 在外键约束“role_user_user_id_foreign”中引用列“user_id”和引用列“id”不兼容。 (SQL:修改表
role_user添加约束role_user_user_id_foreign外键(user_id)在删除级联时引用users(id)SQLSTATE[HY000]:一般错误:3780 在外键约束“role_user_user_id_foreign”中引用列“user_id”和引用列“id”不兼容。
我看到它说不兼容所以我尝试添加 unsigned();到用户创建,但仍然没有骰子。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateRoleUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::disableForeignKeyConstraints();
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('role_id')->unsigned()->index();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->integer('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
Schema::enableForeignKeyConstraints();
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::disableForeignKeyConstraints();
Schema::dropIfExists('role_user');
Schema::enableForeignKeyConstraints();
}
}
和用户创建迁移
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('name')->unique();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('password');
$table->rememberToken();
$table->boolean('activated')->default(false);
$table->string('token');
$table->ipAddress('signup_ip_address')->nullable();
$table->ipAddress('signup_confirmation_ip_address')->nullable();
$table->ipAddress('signup_sm_ip_address')->nullable();
$table->ipAddress('admin_ip_address')->nullable();
$table->ipAddress('updated_ip_address')->nullable();
$table->ipAddress('deleted_ip_address')->nullable();
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
【问题讨论】:
-
您的
users表是在您的role_user表之前创建的吗?两个迁移文件的名称是什么(包括时间戳)? -
是的用户是第一个 2014_10_12_000000_create_user_table.php 和 2016_01_15_105324_create_role_user_table.php
-
确实很奇怪.. 如果你去掉你的外国人,它运行正常吗?
-
尝试用
$table->bigInteger('user_id')->unsigned()->index();替换$table->integer('user_id')->unsigned()->index();