Wie erstelle ich Unicode-Datenbanken in PostgreSQL 8.4?


14

Ich habe das Paket postgresql-8.4 mit den Standardoptionen installiert . Alles hat gut funktioniert, aber ich kann scheinbar keine Unicode-Datenbanken erstellen:

-- This doesn't work
createdb test1 --encoding UNICODE

-- This works
createdb test2

Die Fehlermeldung,

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) 

ist ein bisschen rätselhaft, weil (afaik) ich keine Vorlage zum Erstellen der neuen Datenbank verwende, oder bezieht sie sich aus irgendeinem Grund implizit auf die Standarddatenbank "postgres"?

Oder fehlt mir eine Einstellung in einer .confDatei?

Antworten:


13

Die Vorlage, auf die es sich bezieht template1, wird implizit verwendet, wenn Sie keine andere Vorlage angeben.

Die schnellste Umgehung besteht darin, dass Sie Ihre Datenbank template0stattdessen mit dem Befehl erstellen createdb --template=template0.

Möglicherweise möchten Sie Ihren gesamten Cluster löschen und neu initialisieren, wobei Sie ein vernünftigeres Gebietsschema verwenden. Sie haben wahrscheinlich Ihr Betriebssystem so eingestellt, dass es standardmäßig das Gebietsschema C verwendet. Sie können das Datenbanksystem mit den folgenden Schritten neu initialisieren:

sudo pg_dropcluster --stop 8.4 main
sudo pg_createcluster --locale=en_US.utf8 --start 8.4 main

Verwenden Sie natürlich ein beliebiges Gebietsschema.


Das Löschen des Clusters zum Ändern des Gebietsschemas war genau das, wonach ich gesucht habe, danke :)
wildpeaks

Mann, nach vielem Graben war es das, wonach auch gesucht wurde! Durch nichts anderes konnte PG mit dem Ubuntu-Gebietsschema arbeiten und es sogar ändern. Aber die Neuerstellung des Clusters mit UTF8 hat es geschafft :). Prost!
Lucasarruda

Möglicherweise möchten Sie verwenden --locale=C.UTF-8(Liste der unterstützten Gebietsschemas auf Ihrem System mit locale -a).
Tricasse

3

Möglicherweise müssen Sie das Gebietsschema vor dem Erstellen des Clusters konfigurieren

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Ich denke, es hat bei mir funktioniert!
Alfonx

dpkg-reconfigure benötigt sudo ...
Cerin

-1

Ich denke du meinst:

createdb test42 --encoding utf-8

Das sollte machen was du willst.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.