postgreSQLでリストアエラー

[`evernote` not found]
このエントリーをはてなブックマークに追加

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 にしてあげれば、正常にリストアされます。

時々こういった事を忘れるので。。。

忘れないように書いておきます。

でわ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です