Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Imposible crear base de datos en cualquier codificación.

Estas en el tema de Imposible crear base de datos en cualquier codificación. en el foro de PostgreSQL en Foros del Web. Hola a tod@s, Tengo un problema, a ver si podéis echarme un cable, jeje. Instalé bajo windows, postreSQL y phppgadmin, y me dispuse a crear ...
  #1 (permalink)  
Antiguo 21/01/2010, 08:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 50
Antigüedad: 14 años, 6 meses
Puntos: 0
Imposible crear base de datos en cualquier codificación.

Hola a tod@s,

Tengo un problema, a ver si podéis echarme un cable, jeje. Instalé bajo windows, postreSQL y phppgadmin, y me dispuse a crear unas bases de datos en Catalán. Ahora ha llegado un punto en que no me deja crear bases de datos nuevas, saltándome siempre este error:

Código:
Error de SQL:

ERROR:  encoding LATIN1 does not match locale Catalan, Spain
DETAIL:  The chosen LC_CTYPE setting requires encoding WIN1252.

En la declaración:
CREATE DATABASE "Enquestes" WITH ENCODING='LATIN1'
Mi template principal está en LATIN1, y ya no sé que hacer para que me deje crear bases de datos nuevas. Antes me dejaba.

¿Algúna idea?

Muchas gracias de antemano y un abrazo a toda la comunidad!!
  #2 (permalink)  
Antiguo 21/01/2010, 10:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: Imposible crear base de datos en cualquier codificación.

Apenas ando estudiando la teoría de las nuevas implementaciones de la versión 8.4 en cuanto a codificación.

Que creo es lo que pasa?
Al momento de instalar postresql se crean dos base de datos de administración template0 y template1 y tanto el encoding, collation, regional configuration y otras configuraciones se pegan al servidor.

Al momento de tratar de crear una ase de datos con una codificación diferente, solicita las configuraciones regionales y colaciones acorde a la codificación que se trata de cargar.
El problema es que no he encontrado una tabla donde especifiquen los valores correctos y compatibles entre cada configuración.

La solución que realizo no es muy elegante, pero me ha salvado en un par de ocasiones.

1. crear base de datos con la configuración por defecto.
Código SQL:
Ver original
  1. CREATE DATABASE enquestes;

2. Cambiar la codificación valiendonos de la tabla de administración pg_database
update pg_database set encoding=6 where datname='enquestes';

3. verificar si realmente se hace el cambio de codificación listando las bases de datos con \l.

Ejemplo:
Código SQL:
Ver original
  1. cenicafe=> CREATE DATABASE Enquestes;
  2. CREATE DATABASE
  3. cenicafe=> \l
  4.                                       Listado de base de datos
  5.   Nombre   |  Due±o   | Codificaci¾n |     Collation     |       Ctype       |      Privilegios
  6. -----------+----------+--------------+-------------------+-------------------+-----------------------
  7.  cenicafe  | postgres | LATIN1       | Spanish, Colombia | Spanish, Colombia |
  8.  enquestes | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia |
  9.  postgres  | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia |
  10.  prueba    | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia |
  11.  template0 | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia | =c/postgres
  12.                                                                              : postgres=CTc/postgres
  13.  template1 | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia | =c/postgres
  14.                                                                              : postgres=CTc/postgres
  15. (6 filas)
  16.  
  17. cenicafe=> UPDATE pg_database SET encoding=8 WHERE datname='enquestes';
  18. UPDATE 1
  19. cenicafe=> \l
  20.                                       Listado de base de datos
  21.   Nombre   |  Due±o   | Codificaci¾n |     Collation     |       Ctype       |      Privilegios
  22. -----------+----------+--------------+-------------------+-------------------+-----------------------
  23.  cenicafe  | postgres | LATIN1       | Spanish, Colombia | Spanish, Colombia |
  24.  enquestes | postgres | LATIN1       | Spanish, Colombia | Spanish, Colombia |
  25.  postgres  | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia |
  26.  prueba    | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia |
  27.  template0 | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia | =c/postgres
  28.                                                                              : postgres=CTc/postgres
  29.  template1 | postgres | UTF8         | Spanish, Colombia | Spanish, Colombia | =c/postgres
  30.                                                                              : postgres=CTc/postgres
  31. (6 filas)


8 es el id del oncoding correspondiente a latin1. Por esta razón se hace el update con este codigo.

Posteriormente cuando listas las bases de datos nuevamente, la codificación ya es cambiada a latin1.

De esta forma no he tenido problemas.

espero haberte ayudado
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 21/01/2010, 10:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 50
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Imposible crear base de datos en cualquier codificación.

Muchísimas gracias huesos52 por la pronta respuesta, pero el problema esque no me deja crear ninguna base de datos en ninguna codificación. Tengo el template1 en LATIN1 y al picar el código:
Código:
CREATE DATABASE Enquestes;
Me sigue saliendo el mismo error, cosa que no entiendo ya que el propio template esta en LATIN1, y al crear la base de datos por defecto tendría que crearla en LATIN1. Me está dando unos quebraderos de cabeza esto del encodin que flipas, jeje. Tampoco me deja crearla en ninguna de las codificaciones que salen para elegir al crear la base de datos desde la interfície gráfica del phppgadmin.

Ya no se que hacer. Estoy abierto a cualquier sugerencia más.

Un abrazo a toda la comunidad!!
  #4 (permalink)  
Antiguo 21/01/2010, 10:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: Imposible crear base de datos en cualquier codificación.

Soy nuevo en este tema, pero trataré de ayudarte.

digita \l y pega lo que veas aca.

Mientas tanto, ve mirando estas tablas en la documentación que por ahí parece ser la solución al problema.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 21/01/2010, 17:54
 
Fecha de Ingreso: septiembre-2009
Mensajes: 50
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Imposible crear base de datos en cualquier codificación.

Deacuerdo huesos52, aunque ahora no lo puedo mirar, ya que es faena del curro y no puedo acceder desde mi casa al servidor de la empresa. Mañana a eso de la 1 de la tarde lo miraré y te diré algo. Lo solucionemos o no, muchísimas gracias por la molestia que te estás tomando para ayudarme, te estoy muy agradecido, ya que visito muchos foros y hay pocos que se tomen tantas molestias a cambio de nada. Lo dicho, voy a mirarme este lik a ver que encuentro.

Un abrazo fuerte!!
  #6 (permalink)  
Antiguo 22/01/2010, 06:26
 
Fecha de Ingreso: septiembre-2009
Mensajes: 50
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Imposible crear base de datos en cualquier codificación.

Hola a tod@s!

Esto es lo que me sale:



¿Alguna idea?

Muchas gracias de antemano.

Saludos!
  #7 (permalink)  
Antiguo 25/01/2010, 08:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 50
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Imposible crear base de datos en cualquier codificación.

¿Ninguna idea?

Gracias!!
  #8 (permalink)  
Antiguo 25/01/2010, 10:01
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: Imposible crear base de datos en cualquier codificación.

PUES ES bastante raro que no te deje crear una base de datos nisiquiera con la codificación por defecto para luego cambiarla.

Ultima opción.

ve al archivo postgresql.conf busca este parrafo

Cita:
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'Spanish, Colombia' # locale for system error message
# strings
lc_monetary = 'Spanish, Colombia' # locale for monetary formatting
lc_numeric = 'Spanish, Colombia' # locale for number formatting
lc_time = 'Spanish, Colombia' # locale for time formatting
Debes tener en tus variables Catalan , Spain.

Cambialas a Spanish, Colombia.

PD: Antes de hacer el cambio debes detener el servicio de postgresql y guardar una copia del archivo original postgresql.conf. después de los cambios inicia nuevamente el servicio y prueba lo que te dije en mi primera respuesta
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 02/02/2010, 03:20
 
Fecha de Ingreso: marzo-2009
Mensajes: 79
Antigüedad: 15 años
Puntos: 0
Respuesta: Imposible crear base de datos en cualquier codificación.

Cita:
Iniciado por m4cgyver Ver Mensaje
Hola a tod@s!

Esto es lo que me sale:



¿Alguna idea?

Muchas gracias de antemano.

Saludos!
Buenas, es raro que las bases de datos que ya tienes estén en codificación LATIN1 y no te hayan dado problemas, pero prueba a hacerle caso al código de error y prueba lo siguiente:

Código:
CREATE DATABASE Enquestes TEMPLATE template0 ENCODING 'WIN1252' LC_CTYPE 'ca_ES' LC_COLLATE 'ca_ES';
Si te funciona, cambia la codificación de template1 como te ha dicho huesos52 (todas las bases de datos que crees después usarán esa codificación y comparaciones):
Código:
SELECT encoding FROM pg_database WHERE datname='Enquestes';
UPDATE pg_database SET encoding=numero_que_te_devuelva_el_select WHERE datname='template1';
Otra opción menos farragosa es que, si te lo puedes permitir, hagas un backup de las bases de datos, borres el cluster y vuelvas a ejecutar initdb con el encoding WIN1252.

Puede que también quieras cambiar las preferencias del cliente psql para ponerle la codificación correcta, lo tienes en %APPDATA%\postgresql\psqlrc.conf

Suerte y un saludo

Etiquetas: imposible
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:54.