De relevante optie is --locale=locale
naar de initdb opdracht waarmee uw databasecluster wordt geïnitialiseerd. Als u het niet expliciet opgeeft, wordt het standaard ingesteld op de systeemlandinstelling. (U draait waarschijnlijk uw Ubuntu op landinstelling 'C'.)
Lees meer hierover in de uitstekende handleiding hier .
In PostgreSQL kunt u nog steeds sluipen in een database met een andere locale door een nieuwe database te baseren op template0
in plaats van de standaard templeate1
. Ik citeer hier de handleiding
:
Maar ik zou liever het databasecluster opnieuw maken met de gewenste landinstelling. Veel schoner.
Bewerken:info over beschikbare landinstellingen
Je kunt alleen gebruiken landinstellingen die door het besturingssysteem worden geleverd. Ik citeer de handleiding hier :
Kijk naar locale-gen
in een Unix-systeem, als je een locale wilt gebruiken die nog niet is gegenereerd. Het belangrijkste om te begrijpen is dat er meerdere landinstellingen in uw besturingssysteem kunnen worden geïnstalleerd, maar dat er slechts één kan worden gekozen voor systeemparameters zoals LC_CTYPE
, LC_COLLATE
, etc. Kijk naar de uitvoer van locale
versus locale -a
in de schil. Meestal is het hetzelfde voor iedereen, ingesteld via LC_ALL
.
@David:Wat je deed, heeft misschien je probleem opgelost, maar dat had je makkelijker kunnen maken. Houd er ook rekening mee dat de omgevingsvariabele LANG
biedt alleen de standaard voor alle landinstellingen. Als een van deze is ingesteld op iets anders, LANG
overschreven zal worden. LC_ALL
instellen om een bestaande instelling te overschrijven. Hier is een van vele sites
op het web om je daar meer over te vertellen.
Om alle huidige landinstellingen van uw database (cluster) te controleren, voert u deze uit in uw database:
SHOW ALL;
Of meer specifiek:
SELECT *
FROM pg_settings
WHERE name ~~ 'lc%';