PG::错误:错误:用于编码的字节序列无效 "UTF8":0xed2020(续集::D atabaseError),同时通过Taps将MySQL导入PostgreSQL



我一直在尝试将我的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

相关内容

  • 没有找到相关文章

最新更新