@ashfedor

Как решить ошибку миграции Laravel?

Напишу сразу что laravel только начал изучать.
Создаю чистый проект на Laravel 6 Создаю БД прописываю ее в .env.
создаю файл миграций
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateBlogsTable extends Migration
{
    public function up()
    {
        Schema::create('blogs', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->text('content');
            $table->integer('user_id');
            $table->timestamps();
            
            $table->foreign('user_id')
                  ->references('id')
                  ->on('users');
        });
    }
    public function down()
    {
        Schema::dropIfExists('blogs');
    }
}


делаю команду php artisan migrate и лезет ошибка

Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `blogs` add constraint `blogs_user_id_foreign` foreign key (`user_id`) references `users` (`id`))
Не добавляется ключ foreign
это что с версии выше 5,8 он не работает?
Как это решить , или забить и прописать связь в моделях. Пока лару учу так что если не так написал , не кидайтесь тапками))
  • Вопрос задан
  • 126 просмотров
Решения вопроса 2
aleksejjjj
@aleksejjjj
Для такого рода ключей есть необходимое условие - тип и размер полей должен быть одинаков. ID в таблице users у вас создаётся как unsigned big integer. Соответственно такой же тип должен быть у поля user_id в таблице blogs.
Ответ написан
@jazzus
это что с версии выше 5,8 он не работает?

Примерно с этой версии Laravel стал генерить миграции с bigIncrements ids тогда у многих посыпалось (кто не читал описание апгрейда, конечно)) как правильно ответил Алексей пропиши в blogs

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

на Laravel 6

Начинать лучше с 7й т.к. по сравнению с 6й есть моменты где можно потом нарваться на рефаукторинг)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы