Ограничение внешнего ключа сформировано неправильно - MariaDB & Laravel - PullRequest
0 голосов
/ 19 июня 2019

Я выполняю миграцию базы данных в laravel 5.8 и получаю следующую ошибку:

Illuminate \ Database \ QueryException: SQLSTATE [HY000]: Общая ошибка: 1005 Не удается создать таблицу cartorque.likes (номер ошибки: 150 «Ограничение внешнего ключа сформировано неправильно») (SQL: изменить таблицу likes добавить ограничение likes_ post_id_foreign ссылки на внешний ключ (post_id) posts (id) при каскаде удаления при обновлениикаскад)

Вот как настраиваются мои таблицы

User Table:
    Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
Posts Table
Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
            $table->string('title', 500);
            $table->longText('content');
            $table->tinyInteger('privacy')->default('0');
            $table->string('location', 250);
            $table->bigInteger('longitude');
            $table->bigInteger('latitude');
            $table->bigInteger('user_id')->unsigned()->index();
            $table->string('slug', 250);
        });

        Schema::table('posts', function (Blueprint $table) {
            $table->foreign('user_id')->references('id')->on('users')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        });
Likes Table
Schema::create('likes', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('post_id');
            $table->boolean('like');
        });

        Schema::table('likes', function (Blueprint $table) {
            $table->foreign('post_id')->references('id')->on('posts')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        });

        Schema::table('likes', function (Blueprint $table) {
            $table->foreign('user_id')->references('id')->on('users')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        });

Таблица Likes должна иметь 2 внешних ключа user_id и post_id.Он отлично работает на user_id, но я получаю сообщение об ошибке в столбце post_id

1 Ответ

0 голосов
/ 20 июня 2019

Обнаружил проблему, а таблица сообщений не создавалась.Это произошло из-за порядка переноса файлов.Создание внешнего ключа лайков происходило до создания таблицы сообщений.Я меняю порядок переноса файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...