Laravel Неправильно сформировано ограничение на добавление внешнего ключа для миграции - PullRequest
0 голосов
/ 03 апреля 2020

Пытается перенести файл, но продолжает получать: (errno: 150 «Ограничение внешнего ключа сформировано неправильно») (SQL: изменить таблицу permission_role добавить ограничение permission_role_permission_id_foreign ссылки на внешний ключ (permission_id) permissions (id) при каскаде удаления)

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddForeignKeys extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        Schema::table('permission_role', function(Blueprint $table) {
            $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        });
        Schema::table('role_user', function(Blueprint $table){
            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        }); 
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}


1 Ответ

0 голосов
/ 03 апреля 2020

Сначала вы должны отделить все ваши миграции. Убедитесь, что сначала вы создали таблицы roles, users и permissions (каждая должна иметь свою собственную миграцию) . А затем продолжите создание других.

ошибка: 150 «Ограничение внешнего ключа сформировано неправильно») (SQL: изменить таблицу access_role добавить ограничение allow_role_permission_id_foreign внешний ключ (allow_id) ссылается на разрешения (id) при каскаде удаления)

Эта ошибка возникает из-за того, что таблица permissions еще не создана, поэтому вы не можете ссылаться на нее в своем внешнем ключе.

...