【发布时间】:2019-10-22 19:07:47
【问题描述】:
我正在尝试编写具有外部关系的 laravel 数据库迁移。在数据库迁移期间抛出查询异常错误。
我厌倦了使用 laravel 规则迁移表,但是在迁移过程中它显示了意外错误。
用户表
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 150);
$table->string('email', 150)->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('phone', 150);
$table->unsignedBigInteger('role_id');
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
角色表
Schema::create('roles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('role_name',255);
$table->longText('role_description',255);
$table->integer('sort_order');
$table->enum('status',['A','I','D'])->comment('A-active','I-inactive,D-delete');
$table->enum('is_deleted',['Y','N'])->comment('Y-yes,N-no');
$table->timestamps();
$table->bigInteger('created_by');
$table->bigInteger('updated_by')->default(0);
$table->bigInteger('deleted_by')->default(0);
$table->timestamp('deleted_at')->nullable();
});
Illuminate\Database\QueryException : SQLSTATE[HY000]: 一般错误: 1215 无法添加外键约束(SQL:alter table
jt_users添加约束users_role_id_foreign外键(role_id) 在删除级联时引用jt_roles(id)
【问题讨论】:
-
您似乎错过了在用户迁移中为
role_id定义列定义。迁移顺序也应该很重要......您必须确保角色迁移应该首先运行。