Ten błąd występuje, jeśli masz inną wersję klienta Postgresql (wersja na serwerze Odoo) i serwera (wersja na serwerze Twojej bazy danych). Jeśli używasz „oficjalnego” obrazu Dockera Odoo lub opartego na nim obrazu, np. obraz veivaa/odoo, jest oparty na wersji debian:stretch i ma Postgresql w wersji 9.6 jako domyślny klient. Przy tej konfiguracji będziesz mieć niezgodność:klient v9.6 łączy się z serwerem v10. Spowoduje to otrzymany błąd.
Aby rozwiązać ten problem, musisz zainstalować tę samą wersję na kliencie i serwerze. Możesz albo obniżyć swój serwer Postgres do 9.6, albo zaktualizować klienta Postgres w swoim kontenerze Odoo Docker do 10. Możesz to przetestować, ręcznie aktualizując klienta. docker exec -ti -u 0 yourodoocontainername bash
do kontenera Odoo i wykonanie tych poleceń wewnątrz kontenera 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
Aby je uruchomić, musisz mieć uprawnienia administratora w kontenerze. Po tej instalacji możesz wyjść z exec i ponownie uruchomić kontener za pomocą docker restart yourodoocontainername
. Upewnij się, że masz trwałe miejsce do przechowywania danych Odoo, aby nie stracić magazynu plików. Po wykonaniu tych kroków możesz wykonywać kopie zapasowe i przywracanie za pomocą interfejsu internetowego Odoo.
Możesz sprawdzić wersję swojego klienta Postgresql za pomocą psql --version
Komenda. Oczekiwany wynik w wersji 9.6 to psql (PostgreSQL) 9.6.10
oraz z wersją 10 psql (PostgreSQL) 10.6 (Debian 10.6-1.pgdg90+1)
.
Metoda exec jest dobra do testowania, ale nie nadaje się do stałego użytku, ponieważ obejmuje czynności ręczne. Powinieneś zbudować obrazy Docker we właściwej wersji, modyfikując plik Dockerfile.