Проблемы с подключением к серверу для postgres db — пытаюсь понять, почему

#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, возникнет естественный конфликт, и все может сломаться? Или я неправильно понимаю, что происходит?