Upgrade auf ARM (aarch64) mit nicht-standardmäßigem Locale
Ich habe gerade einige Zeit damit verbracht, ein fehlerhaftes Upgrade auf einem einzelnen Server mit zwei Container-Setups zu beheben.
- Die CPU ist ARM
- Discourse war mit dem Locale
en_UK.UTF-8konfiguriert
Schritt für Schritt habe ich herausgefunden, dass:
tianon/postgres-upgrade:13-to-15funktioniert nicht auf ARM- Die Locale-Konfiguration wird in
share/${CONTAINER}/postgres_data/postgresql.confgespeichert
Ich begann damit, den env:-Teil des Datencontainers auszukommentieren, um sicherzustellen, dass er Standard-Locales verwendet.
Um aus dem Upgrade-Chaos herauszukommen, habe ich einen gefährlichen Schritt unternommen und angenommen, dass die Kollationsunterschiede zwischen en_GB und en_US vernachlässigbar sind. Ich habe den gesamten Cluster rücksichtslos auf en_US aktualisiert:
UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';
Ich bin mir nicht sicher, ob dieser Schritt erforderlich ist, \u003cabbr title=“Your Mileage May Vary”\u003eYMMV\u003c/abbr\u003e. Ich überlasse ihn hier für sachkundigere Personen zur Kommentierung und empfehle ihn auf keinen Fall für verschiedene Sprachen!
Dann habe ich das Locale in postgresql.conf ersetzt:
sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE
![]()
Glauben Sie nicht, dass es einfach war: Ich erwähne nicht den langen Weg der Erkundung von Optionen, insbesondere da die Admin-Oberfläche nicht verfügbar war, als ich eingriff, und das letzte Backup 6 Tage alt war. Ich musste herumfummeln, bevor ich zu einer ordnungsgemäßen – oder zumindest funktionierenden – Lösung gelangen konnte.
Ich hoffe, das spart einigen Leuten Zeit.