Laravel Общая ошибка: 1005 Не могу создать таблицу - PullRequest
1 голос
/ 03 июля 2019

Я получаю эту ошибку при переносе php artisan. Что-то не так в моих файлах миграции?

Подсветка \ База данных \ QueryException: SQLSTATE [HY000]: общая ошибка: 1005 Невозможно создать таблицу test. blog_posts (номер ошибки: 150 "внешний ключ ограничение сформировано неправильно ") (SQL: изменить таблицу blog_posts добавить ограничение blog_pos ts_user_id_foreign внешний ключ (user_id) ссылки users (id))

blog_posts

        $table->increments('id');
        $table->integer('cаtegory_id')->unsigned();
        $table->integer('user_id')->unsigned();
        $table->string('slug')->unique();
        $table->string('title');
        $table->text('excerpt')->nullable(); դաշտ չի
        $table->text('content_raw');
        $table->text('content_html');
        $table->boolean('is_published')->default(false);
        $table->timestamp('published_at')->nullable();
        $table->timestamps();
        $table->softDeletes(); 
        $table->foreign('user_id')->references('id')->on('users');
        $table->foreign('cаtegory_id')->references('id')->on('blog_categories');
        $table->index('is_published');

blog_categories

    $table->increments('id');
    $table->integer('parent_id')->unsigned()->default(0); 
    $table->string('slug')->unique();
    $table->string('title');
    $table->text('description')->unllable(); 
    $table->timestamps(); 
    $table->softDeletes();

Пользователи

        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();

1 Ответ

1 голос
/ 03 июля 2019

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

$table->foreign('user_id')->references('id')->on('users');

- это FKинструкции, но перед этим вам нужно добавить фактический столбец в соответствии с таблицей пользователей.Nullable является необязательным, в зависимости от того, как вы хотите продолжить:

$table->bigInteger('user_id')->unsigned()->nullable();
...