Laravel Проблема миграции Общая ошибка: 3780 - PullRequest
0 голосов
/ 09 мая 2020

У меня есть разработчик, который практически отказался от проекта. У меня есть код с сервера, и я пытаюсь заставить его работать в моей локальной среде. Я пытаюсь перенести его, но у меня все еще возникают проблемы со ссылками, я просмотрел сообщения и перепробовал все: от добавления disableForeignKeyConstraints (); в файл composer dump-autoload et c. Но все равно продолжайте получать

SQLSTATE [HY000]: Общая ошибка: 3780 Ссылка на столбец «user_id» и указанный столбец «id» в ограничении внешнего ключа «role_user_user_id_foreign» несовместимы. (SQL: изменить таблицу role_user добавить ограничение role_user_user_id_foreign ссылки на внешний ключ (user_id) users (id) при каскаде удаления)

SQLSTATE [HY000]: общая ошибка: 3780 Ссылка на столбец user_id и столбец id ссылки в ограничении внешнего ключа role_user_user_id_foreign несовместимы.

Я увидел, что он несовместим, поэтому я попытался добавить 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');
    }
}

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

Эти элементы не работали, и, поскольку у меня была копия базы данных, я выполнил обратную миграцию здесь найдена информация для генератора миграции

Даже тогда я столкнулся с проблемами класса, я просто удалил файлы миграции из папки поставщика, которую использовал разработчик, и смог затем запустить новую миграцию. Всем спасибо!

0 голосов
/ 09 мая 2020

Похоже, что ваша таблица role_user должна быть создана первой. Предположим, ваши файлы миграции выглядят так:

1) create_users_table_migration. php 2) create_roles_table_migration. php

Они будут храниться в laravelProject / database / migrations

Попробуйте запустить только миграцию пользователей с помощью следующей команды:

php artisan migrate --path=laravelProject/database/migrations/create_users_table_migration.php

, а затем путем миграции таблицы user_roles с помощью:

php artisan migrate --path=laravelProject/database/migrations/create_users_table_migration.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...