我一直在尝试将我的MySQL迁移到Postgres,从我发现的内容来看,是taps-gem。
不幸的是,它在基本上每一个包含用户数据的表上都失败了,出现了某种异常
PG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0xed2020 (Sequel::DatabaseError)
每个表中的无效字符不同,但例外情况相同。
这不是其他PG::Error: ERROR: invalid byte sequence for encoding
问题的重复,因为其中每一个问题都提到使用Iconv.iconv("UTF8...", content)
强制编码。但我不能这样做,因为我使用水龙头进口
还有一点需要注意,我尝试过mysqldump --compatible=postgres
,但当我试图将其导入Postgres时,它在每个查询中都失败了
我使用的是MySQL 5.1.63和PostgreSQL 9.1.4。
您可以尝试使用SQL_ASCII编码而不是UTF8来创建PostgreSQL数据库,看看这是否能解决问题。
基本上,您的问题似乎是MySQL数据库中有非UTF8编码的文本,并且您正试图将其导入到使用UTF8-编码的PostgreSQL数据库中。如果你真的想让PostgreSQL数据库保持UTF8编码,你需要在尝试插入之前将你在MySQL中使用的任何编码代码转换为UTF8
这假设问题出在数据库级别。如果问题是在ruby级别,您可以尝试使用ruby 1.8(如果您使用的是ruby 1.9),看看这是否有什么不同。
请参阅此问题:https://github.com/ricardochimal/taps/issues/110
在启动taps服务器时添加明确的utf-8编码设置应该会有所帮助:
taps server mysql://user:password@host/dbname?encoding=utf8 httpuser httpass