postgreSQLのリストアで、こんなエラーが出る事があります。
# su – postgres
$ createdb testDB
$ psql -e testDB < testDB.dump
(snip)
ERROR: invalid byte sequence for encoding “UTF8”: 0xcbcc
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by “client_encoding”.
このエラーの場合、バックアップする為にDumpした時のエンコードと、リストアする時のDBのエンコードが合っていない事が主な原因っぽいです。
バックアップとリストアの手順としては、
■バックアップ
# su – postgres
$ pg_dump DB名 > Dumpファイル名
■リストア
# su – postgres
$ createdb DB名
$ psql -e DB名 < Dumpファイル名
こんな感じです。
ここで、エンコードの絡みが出てくるのです。
今回、CentOS 5.2, postgreSQL8 で createdb した場合、デフォルトでエンコードは UTF8 になりました。
しかし、Dumpしたデータのエンコードが SQL_ASCII だった為、正常にリストアが出来ない状況でした。
それを回避する為には、リストアする際に、
# su – postgres
$ createdb -E SQL_ASCII DB名
$ psql -e DB名 < Dumpファイル名
と、エンコードを SQL_ASCII にしてあげれば、正常にリストアされます。
時々こういった事を忘れるので。。。
忘れないように書いておきます。
でわ。