Laravel Migration - столбец уже существует

Несколько месяцев назад я работал допоздна, и мне нужно было создать новый столбец для таблицы postgres. Я добавил столбец через командную строку, используя стандартные команды heroku / postgres. Я быстро понял, насколько это глупо, удалил столбец, а затем создал необходимую миграцию, чтобы добавить его.

Недавно я взял это приложение laravel и создал конвейер с ним в качестве производственного приложения. Я создал новое промежуточное приложение и настроил для него базу данных. Когда я запустил миграции, я получил сообщение об ошибке, что столбец уже существует. Как вы уже догадались, это та же самая колонка, с которой я раньше напортачил.

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

Меня беспокоит, что эта же ошибка произойдет, когда я отправлю промежуточный код в рабочую среду и мне придется перезапустить свои миграции. Очевидно, что в производственном приложении я не могу просто удалить рассматриваемый столбец, поскольку в нем есть данные.

Есть ли идеи относительно того, почему это могло произойти, и что я могу сделать, чтобы исправить проблему, если она возникает, когда я отправляю код в производство?

Я бы посмотрел на ваши файлы миграции и убедился, что столбец не добавляется более одного раза.

admcfajn 15.04.2018 05:07

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

Muhammad Nauman 15.04.2018 07:01

Взгляните на github.com/beckenrode/…. Если вас устраивает база данных тестовой среды, вы также можете создавать все миграции с нуля. Этот модуль работает вместе с MySQL Workbench.

Dimitri Mostrey 15.04.2018 07:23

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

Joshua Foxworth 15.04.2018 15:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
4
393
0

Другие вопросы по теме