Эта ошибка возникает, если у вас другая версия клиента Postgresql (версия на сервере Odoo) и сервера (версия на сервере базы данных).Если вы используете "официальный" образ Docker Odoo или изображение на его основе, например, образ veivaa / odoo, он основан на версии debian: stretch и имеет Postgresql версию 9.6 в качестве клиента по умолчанию.При такой настройке у вас будет несоответствие: клиент v9.6 подключается к серверу v10.Это приведет к ошибке, которую вы получаете.
Чтобы решить эту проблему, вы должны установить ту же версию на клиенте и сервере.Вы можете либо понизить свой сервер Postgres до 9.6, либо обновить клиент Postgres в контейнере Odoo Docker до 10. Вы можете проверить это, выполнив обновление клиента вручную.docker exec -ti -u 0 yourodoocontainername bash
к контейнеру Odoo и выполнение этих команд внутри контейнера Odoo:
apt-get update
echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' > /etc/apt/sources.list.d/pgdg.list
yes Y | apt-get install wget
yes Y | apt-get install gnupg
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
yes Y | apt-get install postgresql-client-10
Для запуска этих программ вам необходимо иметь root-права в контейнере.После этой установки вы можете выйти из exec и перезапустить свой контейнер с помощью docker restart yourodoocontainername
.Убедитесь, что у вас есть постоянное хранилище, используемое для данных Odoo, чтобы вы не потеряли свое хранилище файлов.После этих шагов вы сможете выполнять резервное копирование и восстановление с помощью веб-интерфейса Odoo.
Вы можете проверить версию клиента Postgresql с помощью команды psql --version
.Ожидаемый результат для версии 9.6 - psql (PostgreSQL) 9.6.10
, а для версии 10 psql (PostgreSQL) 10.6 (Debian 10.6-1.pgdg90+1)
.
Метод exec хорош для тестирования, но не годится для постоянного использования, поскольку включает ручные действия.Вам следует создавать образы Docker с правильной версией, изменяя свой Dockerfile.