Для приложения Ruby-on-Rails, которое я размещаю через Heroku, я недавно загрузил резервную копию, восстановил ее локально, а затем добавил данные в базу данных из внешних источников. Все это прекрасно работало.
После того, как обновленная база данных была перенесена в Heroku с помощью heroku pg:push <localdbname> HEROKU_DATABASE_URL --app <appname>
, приложение работало нормально, и я мог видеть недавно добавленные данные.
Однако сегодня, когда я пытался войти в приложение на Heroku, я получал сообщения об ошибках. В моем файле журнала я увидел эту ошибку:
ActionView::Template::Error (Unknown primary key for table ...
В соответствии с этим сообщением SO: Получение и неизвестный первичный ключ для таблицы " в то время как идентификатор есть
один пользователь смог обойти эту проблему, сбросив и нажав базу данных на Heroku несколько раз. Однако это не сработало для меня. Я попытался reset и вытащил базу данных как минимум 4 раза.
Одна из возможностей заключается в том, что моя база данных postgres использует версию 9.6, а приложение использует версию 9.4. База данных Heroku - это база данных Hobby-Basic. Существует документация от Heroku о том, как обновить версию Postgres, но не совсем ясно из их примера, что мне нужно будет сделать. Я предполагаю, что мне в основном нужно создать новую базу данных, скопировать данные из старого в новое, а затем уничтожить старое. Кто-нибудь делал это раньше? Есть ли плата, связанная с этим? И обновил версию Postgres удаленно исправил эту проблему для других людей?