Come posso creare database Unicode in PostgreSQL 8.4?


14

Ho installato il pacchetto postgresql-8.4 con le opzioni predefinite. Tutto ha funzionato bene, tuttavia non riesco a riuscire a creare database unicode:

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

-- This works
createdb test2

Il messaggio di errore,

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

è un po 'sconcertante perché (afaik) non uso un modello per creare il nuovo db, o si riferisce implicitamente al database "postgres" predefinito per qualche motivo?

O forse mi manca un'impostazione in un .conffile?

Risposte:


13

Il modello a cui si riferisce è template1, che viene utilizzato implicitamente se non si specifica un altro modello.

La soluzione più rapida è invece creare il database da template0, utilizzando il createdb --template=template0.

È possibile che si desideri eliminare e reinizializzare l'intero cluster con impostazioni internazionali più sensate. Probabilmente il tuo sistema operativo è stato impostato per utilizzare la locale C per impostazione predefinita. È possibile reinizializzare il sistema di database con questi passaggi:

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

Usa qualunque locale ti piaccia, ovviamente.


Eliminare il cluster per modificare le
impostazioni

Amico, dopo aver scavato molto, questo era anche quello che cercavo! Nient'altro potrebbe far funzionare PG con le impostazioni locali di Ubuntu, anche cambiandolo. Ma ricreare il cluster con UTF8 ha funzionato :). Saluti!
lucasarruda,

Si consiglia di utilizzare --locale=C.UTF-8(elencare le versioni locali supportate sul proprio sistema con locale -a).
tricasse il

3

forse è necessario configurare le impostazioni internazionali prima di creare il cluster

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

Penso che abbia funzionato per me!
Alfonso

dpkg-reconfigure richiede sudo ...
Cerin,

-1

Penso che intendi:

createdb test42 --encoding utf-8

Questo dovrebbe fare quello che vuoi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.