0

私は MySQL を Postgres に移行しようとしてきまし

残念ながら、基本的に、ユーザーデータが含まれるすべてのテーブルで失敗していますが、この例外のようなものがあります

PG::Error: ERROR:  invalid byte  sequence for encoding "UTF8": 0xed2020 (Sequel::DatabaseError) 

無効な文字はテーブルごとに異なりますが、例外は同じです。

これは、他の質問と重複するものではありません。すべての質問で、エンコーディングを強制するPG::Error: ERROR: invalid byte sequence for encodingために を使用することが言及されているからです。Iconv.iconv("UTF8...", content)しかし、インポートにタップを使用しているため、それはできません。

また、1つの補足として、私は試してmysqldump --compatible=postgresみましたが、Postgresにインポートしようとすると、すべてのクエリで失敗します。

MySQL 5.1.63 と PostgreSQL 9.1.4 を使用しています。

4

2 に答える 2

1

UTF8 の代わりに SQL_ASCII エンコーディングを使用して PostgreSQL データベースを作成し、問題が回避されるかどうかを確認してみてください。

基本的に、MySQL データベースに UTF8 でエンコードされていないテキストが含まれており、それを UTF8 エンコードを使用する PostgreSQL データベースにインポートしようとしていることが問題のようです。本当に PostgreSQL データベースを UTF8 エンコーディングのままにしたい場合は、挿入する前に、MySQL で使用しているエンコーディングを UTF8 にトランスコードする必要があります。

これは、問題がデータベース レベルにあることを前提としています。問題が Ruby レベルにある場合は、Ruby 1.8 (Ruby 1.9 を使用している場合) を使用してみて、違いが生じるかどうかを確認してください。

于 2012-07-25T00:23:07.510 に答える