mercredi 13 août 2014

Django Heroku Postgresql erreur : séquence d'octets non valide pour l'encodage « UTF8 » - Stack Overflow


I am using Django with Heroku Postgreql. I use both English and Turkish languages on default DB settings. My DB works with no issues both locally and on Heroku. However, I get error, when I try to dump and restore db from local to production.


psql -U user -d db_name -f "b003.dump"

psql:b003.dump:270: ERROR: invalid byte sequence for encoding "UTF8": 0xa3



First guess: Encoding mismatch


Your file b003.dump is not in the UTF-8 encoding.


You will need to override the encoding settings, specifying the correct text encoding for the file.


It's probably iso-8859-9 if it has Turkish text, though 0xa3 is the pound symbol (£) in many of the ISO-8859 encodings.


Try:


PGCLIENTENCODING="iso-8859-9" psql ....

I also suggest checking the output of the locale command to see what your system default encoding is, and of file -bi b003.dump to try to guess the encoding.


Second guess, after comments revealed file output


Your file isn't an SQL script style dump. It a PostgreSQL custom database dump. That's why file says:


b003.dump: PostgreSQL custom database dump - v1.12-0 

Restore it with the pg_restore command.


pg_restore -f b003.dump -d db_name -U user

At some point I want to enhance psql so it tells you this, rather than failing with an error.


The weird thing here is that you must've had a lot of previous errors, before the one you showed here, if it's a custom dump.



I am using Django with Heroku Postgreql. I use both English and Turkish languages on default DB settings. My DB works with no issues both locally and on Heroku. However, I get error, when I try to dump and restore db from local to production.


psql -U user -d db_name -f "b003.dump"

psql:b003.dump:270: ERROR: invalid byte sequence for encoding "UTF8": 0xa3


First guess: Encoding mismatch


Your file b003.dump is not in the UTF-8 encoding.


You will need to override the encoding settings, specifying the correct text encoding for the file.


It's probably iso-8859-9 if it has Turkish text, though 0xa3 is the pound symbol (£) in many of the ISO-8859 encodings.


Try:


PGCLIENTENCODING="iso-8859-9" psql ....

I also suggest checking the output of the locale command to see what your system default encoding is, and of file -bi b003.dump to try to guess the encoding.


Second guess, after comments revealed file output


Your file isn't an SQL script style dump. It a PostgreSQL custom database dump. That's why file says:


b003.dump: PostgreSQL custom database dump - v1.12-0 

Restore it with the pg_restore command.


pg_restore -f b003.dump -d db_name -U user

At some point I want to enhance psql so it tells you this, rather than failing with an error.


The weird thing here is that you must've had a lot of previous errors, before the one you showed here, if it's a custom dump.


0 commentaires:

Enregistrer un commentaire