Cambiar Codificación Latin -> UTF-8 PostgreSQL & Odoo
Este Error me causo conflicto al tratar de crear una Maquina Virtual para migrar una instancia de Odoo al instalar las dependencias que necesita este maravilloso ERP, el motor de Base de Datos (PostgreSQL) y por ultimo restablecer la Base de Datos, me di cuenta que no podía acceder a la base restablecida en la parte web me arrojaba el error "Unable to Login" y en el archivo log una serie de errores relacionados con los accesos a la base de datos.
Primero verifique mis bases de Datos con el comando:
sudo su postgres
psql -l
Veriamos algo similar a:
Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------------------+-----------+----------+-------------+-------------+----------------------- Mi_Base_Odoo | odoo | LATIN1 | LATIN1 | LATIN1 | postgres | postgres | LATIN1 | LATIN1 | LATIN1 | template0 | postgres | LATIN1 | LATIN1 | LATIN1 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | LATIN1 | LATIN1 | LATIN1 | =c/postgres +
Este fue el problema principal por el que no podia acceder a mi Base de Datos, la solución fue cambiar la encodificación de la base principal de postgres y template1.
Ejecutaremos esta seria de comandos en la terminal de PostgreSQL, que básicamente creara nuevamente la base principal de postgresq Template1:
sudo su postgres psql update pg_database set datistemplate=false where datname='template1';
drop database Template1;
create database template1 with owner=postgres encoding='UTF-8' lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;
update pg_database set datistemplate=true where datname='template1';Si nos muestra error en_US, instalamos:
locale-gen en_US.UTF-8
Cambiamos el encoding de nuestra base postgres:update pg_database set encoding=6 where datname='postgres';Si necesitan conocer mas acerca de como asignar la codificación dejo esta imagen:
Ahora borramos y restauramos nuestra base de Datos y esta tendrá la codificación correcta.
En Ubuntu también debemos asignar Correctamente la codificación unicode.
1. Ejecutamos el comando que generara archivos locales con la codificación Unicode:
update pg_database set encoding=6 where datname='postgres';2. Actualizamos el archivo /etc/default/locale con los valores correctos (o usamos update-locale LANG=xx LC_CTYPE=xx ...), si optamos por actualizar el archivo tendremos que poner estos cambios:
$ sudo cat - > /etc/default/locale <<EOF LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 EOF
Reiniciamos nuestro servidor Odoo y podemos trabajar de forma correcta.
update pg_database set encoding=pg_char_to_encoding('UTF8') where datname='postgres';
ResponderBorrar