Rails нужно мигрировать каждый раз при перезагрузке сервера - PullRequest
0 голосов
/ 25 июня 2019

При развертывании моего приложения на heroku появляется сообщение об ошибке миграции.

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

Теперь при каждом перезапуске сервера (localhost) мне нужно db:migrate снова, чтобы все работало.

Когда я просто использую db:migrate, ошибка говорит: table 'product' already existed' Итак, сначала мне нужно db:drop, а затем db:migrate, чтобы мое приложение заработало Это заняло у меня много времени. Как я могу решить эту проблему? Вот мой статус миграции:

up 20190306060445 ********** NO FILE ********** down 20190306060545 Create product up 20190307035103 Create active storage tablesactive storage up 20190308045037 ********** NO FILE ********** up 20190308071304 ********** NO FILE ********** down 20190308072304 Devise create users up 20190308074025 Devise create admins down 20190308082018 Create categories up 20190308083018 ********** NO FILE ********** up 20190311041416 ********** NO FILE ********** up 20190313084429 Create payment up 20190314024236 Create cart up 20190314024911 Create cart product up 20190314035334 Create messages up 20190314145333 Create payment item up 20190314151340 ********** NO FILE ********** up 20190315020606 ********** NO FILE ********** up 20190318073652 Create voucher up 20190319035819 ********** NO FILE ********** up 20190319134032 Contacts up 20190320034249 ********** NO FILE ********** up 20190320062223 ********** NO FILE ********** up 20190325132236 ********** NO FILE ********** up 20190325155829 ********** NO FILE ********** up 20190329095529 ********** NO FILE ********** up 20190329110656 ********** NO FILE ********** up 20190330145000 ********** NO FILE ********** up 20190331162926 ********** NO FILE ********** up 20190408155326 ********** NO FILE ********** up 20190419055934 ********** NO FILE ********** up 20190419060341 ********** NO FILE ********** up 20190502105847 ********** NO FILE ********** up 20190502110019 Add stock up 20190506114910 ********** NO FILE ********** up 20190506115146 ********** NO FILE ********** up 20190506115302 ********** NO FILE ********** up 20190513042021 ********** NO FILE ********** up 20190513050115 ********** NO FILE ********** up 20190514025220 ********** NO FILE ********** up 20190514031046 ********** NO FILE ********** up 20190516010239 Create comment up 20190516020021 ********** NO FILE ********** up 20190517132706 Create notification up 20190524152143 Create brands up 20190527040142 ********** NO FILE ********** up 20190528113143 Add columns devise up 20190528113658 Add columns devise 1 up 20190531125307 Create news up 20190531144908 Create ckeditor assets up 20190601100118 Create news products up 20190602144319 Create type of news up 20190602155208 ********** NO FILE ********** up 20190603062824 ********** NO FILE ********** up 20190606172629 ********** NO FILE ********** up 20190607074100 ********** NO FILE ********** up 20190607122350 ********** NO FILE ********** up 20190607140214 ********** NO FILE ********** up 20190608082804 ********** NO FILE ********** up 20190609051100 Add omniauth to users up 20190611115405 ********** NO FILE ********** up 20190612071933 Create table carousels up 20190612100433 ********** NO FILE ********** up 20190613082404 ********** NO FILE ********** up 20190614131413 ********** NO FILE ********** up 20190615161828 ********** NO FILE ********** up 20190617154212 Create district up 20190617154602 Create province up 20190619140034 Create ward up 20190620134528 ********** NO FILE ********** down 20190620140214 Convert tables to utf8 v1 up 20190622123753 ********** NO FILE **********

1 Ответ

0 голосов
/ 25 июня 2019

Изменяя все свои миграции, вы создали «новые» миграции.rails db:migrate пытается применить эти "новые" миграции к уже существующей базе данных.(Список примененных миграций содержится в таблице schema_migrations).Мы видим, что все миграции down не были применены.Включая down 20190306060545 Create product.

Поскольку это работающая производственная база данных, предположительно таблица product уже существует.Когда Rails запускает миграцию 20190306060545 Create product, которая, по-видимому, пытается create_table :product, она потерпит неудачу, потому что product уже существует.

Один из способов избежать этого - сначала проверить, существует ли таблица в ваших миграциях «создания таблицы»,Если это произойдет, ничего не делайте.

if table_exists?(:product)
  return
end

Чтобы воспроизвести это в разработке ...

  • Проверьте исходные миграции.
  • Создайте свежую схему изчто: rails db:migrate:reset
  • Проверьте новые комбинированные миграции.
  • Попробуйте выполнить миграцию: rails db:migrate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...