#ruby-on-rails #postgresql
#ruby-on-rails #postgresql
Вопрос:
Я работаю над проектом rails, который я клонировал с GitHub. Из-за других обязательств я не мог программировать в течение ~ 6 месяцев, поэтому, возможно, за это время у меня было обновление OSX.
Я получаю проблему, которая, как я вижу, была у других:
➜ isengarden git:(develop) rails db:create
could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Couldn't create 'isengarden_development' database. Please check your configuration.
rails aborted!
PG::ConnectionBad: could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
/Users/joshua/code/JoshInLisbon/rails-projects/isengarden/bin/rails:9:in `<top (required)>'
/Users/joshua/code/JoshInLisbon/rails-projects/isengarden/bin/spring:15:in `<top (required)>'
./bin/rails:3:in `load'
./bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)
postgres.log:
2021-01-07 14:22:42.358 WET [86720] FATAL: database files are incompatible with server
2021-01-07 14:22:42.358 WET [86720] DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.1.
Я пытаюсь использовать решения, которые были изложены в StackOverflow, но мне бы очень хотелось знать, что происходит под капотом, чтобы вызвать эту ошибку.
У меня довольно ограниченное понимание основ БД, поэтому для меня подобная проблема находится в очень непрозрачном пространстве, где я просто копирую и вставляю решения, не имея представления о том, почему они могут работать.
Кто-нибудь может объяснить, что, вероятно, происходит, и каково фактическое значение моих журналов postgres?
Спасибо
Комментарии:
1. Похоже, вы используете PostgreSQL версии 13 в каталоге данных версии 11. Какие обновления вы сделали? И есть ли у вас другие каталоги данных?
Ответ №1:
Версия, которую вы установили на своем локальном компьютере, отличается от версии postgres, с которой был создан проект, при изменении разных версий вы должны быть осторожны, поскольку некоторые функции устарели или переименованы, в дополнение к структуре или форме, в которой сохраняются данные, также изменяется.
Каталог данных был инициализирован PostgreSQL версии 11, которая несовместима с этой версией 13.1.
Я предлагаю вам установить postgres версии 11, и если вы хотите работать с 13.1, вам необходимо создать резервную копию и загрузить ее в базу данных, созданную с текущей версией
Комментарии:
1. Спасибо, так что postgres «родной» для моей машины. Итак, допустим, я начинаю проект и создаю postgres db, который использует (скажем) версию 11. Затем я выполняю обновление компьютера, и postgres обновляется до версии 13, возникнет естественный конфликт, и все может сломаться? Или я неправильно понимаю, что происходит?