Обновленный postgresql в локальном приложении Rails 4 и теперь FATAL: база данных "[myapp] _development" не существует - PullRequest
0 голосов
/ 13 декабря 2018

Я застрял при попытке обновить старое приложение rails 4.0.13.

В настоящее время оно работает в стеке Heroku cedar-14, и я пытаюсь обновить его до стека heroku-18.Самая ранняя версия ruby, которую принимает Heroku-18, - 2.3.8, поэтому я начал там.Локально я изменил Gemfile на ruby ​​2.3.8 и запустил

$ bundle update --conservative

Я получил несколько предупреждений, но ничего не фатально.Когда я попытался запустить локальную базу данных postgresql, я получил:

The data directory was initialized by PostgreSQL version 9.5, 
which is not compatible with this version 9.6.1

Я следовал замечательным инструкциям на Как обновить PostgreSQL 9.5.5 до 9.6.1 с помощью Homebrew (macOS). Ioannis Poulakas , что было очень полезно.Единственное изменение, которое я сделал, было в его строке 25:

Его оригинальная команда:

$ pg_upgrade -b /usr/local/Cellar/postgresql95/9.5.5/bin -B /usr/local/Cellar/postgresql/9.6.1/bin -d /usr/local/var/postgres95 -D /usr/local/var/postgres

Я немного изменил это для файлов home-brew, созданных на моем локальном mac, так:

$ pg_upgrade -b /usr/local/Cellar/postgresql@9.5/9.5.14/bin -B /usr/local/Cellar/postgresql/9.6.1/bin -d /usr/local/var/postgresql@9.5 -D /usr/local/var/postgres   

Проверка целостности и обновление работали, но когда я снова запустил базу данных с:

$ pg_ctl start -D /usr/local/var/postgres

Я получил FATAL: database "[myapp]_development" does not exist

У кого-нибудь есть какие-нибудь мысли?Я не хочу делать что-то вроде $ rake:db:create из-за страха, что это сотрет данные, которые я только что скопировал.

1 Ответ

0 голосов
/ 13 декабря 2018

Вы должны иметь возможность загрузить снимок вашей базы данных, следуя инструкциям на https://devcenter.heroku.com/articles/heroku-postgres-backups. После того, как вы скачали снимок, восстановление базы данных с помощью прямой копии базы данных должно быть тривиальным.

В этот момент я просто выполнил обычные шаги восстановления базы данных, о которых вы упомянули, зная, что у вас есть локальный снимок, если что-то пойдет не так, и вы по какой-то причине потеряете свои данные.Если база данных уже существует, она в любом случае пропустит воссоздание, так что вам, возможно, придется в любом случае заново создать / создать / перенести, чтобы полностью решить проблему с обновлением.

...