Ошибка SQLSTATE[42S21] Почему не устанавливаются внешние ключи?

Формирую миграцию по изменению таблицы
php artisan make:migration ChangeArticlesTable --table=articles

Миграция происходит успешно.
Далее открываю файл миграции, вношу записи по формировании внешних ключей
$table->integer('user_id')->unsigned()->default(1);
     $table->foreign('user_id')->references('id')->on('users');         
     $table->integer('category_id')->unsigned()->default(1); 
     $table->foreign('category_id')->references('id')->on('categories');

Дальше необходимо внести изменения командой
php artisan migrate
Но изменения не вносятся, появляется сообщение об ошибке:
[Illuminate\DATABASE\QueryException]
SQLSTATE[42S21]: COLUMN already EXISTS: 1060 Duplicate COLUMN name 'user_id' 
(SQL: ALTER TABLE 'articles' ADD 'user_id' INT UNSIGNED NOT NULL DEFAULT ‘1’, ADD 'catego ry_id' INT UNSIGNED NOT NULL DEFAULT ’l’)
[PDOException]
SQLSTATE[42S21]: COLUMN already EXISTS: I960 Duplicate COLUMN name ’user_id'

Не понимаю почему не устанавливаются внешние ключи, что не так делаю? В ошибке указывается на существующие колонки, естественно, что они существуют и я их не намерен менять. Задача установить внешние ключи.
  • Вопрос задан
  • 975 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alexspi
эээммм, а что? сразу создать таблицу с ключами религия не позволяет?
Ответ написан
@Nimfus
Schema::table('articles', function ($table) {
           $table->foreign('user_id')
                ->references('id')->on('users');

            $table->foreign('category_id')
                ->references('id')->on('categories');
        });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы