¿Cómo creo bases de datos Unicode en PostgreSQL 8.4?


14

Instalé el paquete postgresql-8.4 con las opciones predeterminadas. Todo funcionó bien, sin embargo, parece que no puedo lograr crear bases de datos Unicode:

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

-- This works
createdb test2

El mensaje de error,

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

es un poco desconcertante porque (afaik) no uso una plantilla para crear la nueva base de datos, o ¿se refiere implícitamente a la base de datos predeterminada "postgres" por alguna razón?

¿O tal vez me falta una configuración en un .confarchivo?

Respuestas:


13

La plantilla a la que se refiere es template1, que se usa implícitamente si no especifica otra plantilla.

La solución más rápida es crear su base de datos en su template0lugar, utilizando createdb --template=template0.

Es posible que desee soltar y reiniciar todo su clúster con una configuración regional más sensata. Probablemente haya configurado su sistema operativo para que use la configuración regional C de forma predeterminada. Puede reinicializar el sistema de base de datos con estos pasos:

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

Utilice la configuración regional que desee, por supuesto.


Dejar caer el clúster para modificar la configuración regional era exactamente lo que estaba buscando, gracias :)
wildpeaks

Hombre, después de mucho cavar, ¡eso era lo que estaba buscando también! Nada más podría hacer que PG funcione con la configuración regional de Ubuntu, incluso cambiarlo. Pero volver a crear el clúster con UTF8 hizo el truco :). ¡Salud!
lucasarruda

Es posible que desee utilizar --locale=C.UTF-8(enumere las configuraciones regionales compatibles en su sistema con locale -a).
tricasse

3

tal vez necesite configurar la configuración regional antes de crear el clúster

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

¡Creo que funcionó para mí!
alfonx

dpkg-reconfigure requiere sudo ...
Cerin

-1

Creo que quieres decir:

createdb test42 --encoding utf-8

Eso debería hacer lo que quieras.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.