Centos Postgres Nie udało się uruchomić

1

Mam CentOs 6.7 zainstalowany na moim serwerze:

bash-4.1# uname -r
2.6.32-573.18.1.el6.x86_64

Po ponownym uruchomieniu serwera mój serwer PostgreSQL 9.6 nie uruchamia się z powodu problemu z ustawieniami regionalnymi.

Oto komunikat o błędzie dziennika: pgstartup.log

< 2017-01-26 16:33:08.115 IST > LOG:  invalid value for parameter "lc_messages": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > LOG:  invalid value for parameter "lc_monetary": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > LOG:  invalid value for parameter "lc_numeric": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > LOG:  invalid value for parameter "lc_time": "en_US.UTF-8"
< 2017-01-26 16:33:08.123 IST > FATAL:  configuration file "/var/lib/pgsql/9.6/data/postgresql.conf" contains errors

Oczekuje, że w systemie będą dostępne ustawienia regionalne „en_US.UTF-8”. Sprawdziłem i jest rzeczywiście dostępny.

bash-4.1# locale -a | grep en_US
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
en_US
en_US.UTF-8
en_US.iso88591
en_US.iso885915
en_US.utf8

Skomentowałem więc następujące wiersze z pliku postgresql.conf:

#lc_messages = 'en_US.UTF-8'                    # locale for system error message
                                        # strings
#lc_monetary = 'en_US.UTF-8'                    # locale for monetary formatting
#lc_numeric = 'en_US.UTF-8'                     # locale for number formatting
#lc_time = 'en_US.UTF-8'                                # locale for time formatting

Po skomentowaniu wierszy zgodnie z powyższym, serwer się gapi, ale nie może się zalogować do serwera i płacze następujący błąd:

bash-4.1$ psql
psql: FATAL:  database locale is incompatible with operating system
DETAIL:  The database was initialized with LC_COLLATE "en_US.UTF-8",  which is not recognized by setlocale().
HINT:  Recreate the database with another locale or install the missing locale.

Teraz mam ustawienia systemowe wymagane przez postgres, a także jego płacz. Nie wiem, gdzie dokładnie jest problem.

Uwaga: ten problem pojawia się po ponownym uruchomieniu serwera.

Anil Bharadia
źródło

Odpowiedzi:

1

Znalazłem rozwiązanie tego problemu.

W rzeczywistości ustawienia narodowe są dostarczane przez bibliotekę Glibc. Na serwerze wersja Glibc to 2.12.

Z jakiegoś powodu potrzebowaliśmy wersji 2.14 i nie było możliwe uaktualnienie 2.12 do 2.14 przez yum, ponieważ yum mówił o swojej najnowszej wersji.

Więc ręcznie skompilowaliśmy źródło 2.14 i stworzyliśmy binaria.

i zmieniłem link z 2.12 na 2.14 i stworzyłem ten bałagan.

Rozwiązanie: przywrócono łącze sym do oryginalnej wersji 2.12.

Morał: Nigdy nie zadzieraj z glibc, nie w ten sposób, wskazując łącza sym do różnych wersji.

Anil Bharadia
źródło