[英]ActiveRecord::StatementInvalid - PG::CharacterNotInRepertoire: ERROR: invalid byte sequence for encoding “UTF8”
[英]Ruby 2.2: PG::CharacterNotInRepertoire: ERROR: invalid byte sequence for encoding “UTF8”
我正在升级Rails 4.1应用程序以使用Ruby 2.2。 在升级期间,结果发现该应用程序使用旧版本的pg gem(0.12)并且gem未使用Ruby 2.2进行安装。 所以我尝试使用更新版本的pg gem(0.17.1)。 现在,有时在系统中创建新用户时会出现以下错误:
PG :: CharacterNotInRepertoire:ERROR:编码“UTF8”的无效字节序列
Ruby 2.2和Postgres有任何已知问题吗?
看起来应用程序配置为使用unicode: config.encoding = "utf-8"
在application.rb中设置并且encoding: unicode
在database.yml中
SQL语句:
INSERT INTO "users" (
"confirmation_sent_at",
"confirmation_token",
"created_at",
"email",
"encrypted_password",
"first_name",
"last_name",
"updated_at")
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
RETURNING "id"
在使用Postgres的Ruby 2.2.0重新UTF-8编码中肯定存在某种错误。 我将以前没有错误的Rails 4.1.5应用程序从Ruby 2.1.5升级到Ruby 2.2.0并开始在开发和用户输入电子邮件字段中获取这些错误“PG :: CharacterNotInRepertoire:ERROR:用于编码UTF8的无效字节序列”在Heroku的临时环境中。 降级到Ruby 2.1.5而没有其他更改完全解决了这个问题。
更新:
打败这个更新,但错误不在于Ruby,而是pg gem: https : //github.com/ged/ruby-pg/pull/5
看起来这是“pg”gem的一个已知问题: https : //bitbucket.org/ged/ruby-pg/issue/197/ruby-220-byte-encoding-issue
它应该在0.18预发布中修复
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.