Rails:“UTF-8 中的字节序列无效”通过 UUID 设置 has_one 关联时出现异常
环境:Ruby 1.9.2,Rails 3.0.1
两个MySQL表:1.items,2.vote_counts(每一行代表对某个item投票的用户数)
由于表很大,我需要对它们进行分片,所以我使用 UUID。 uuid 列在两个表中均定义:uuid
varbinary(16) NOT NULL。
我在项目模型中定义了一个 has_one 关联: has_one :vote_count, :foreign_key => “uuid”,:primary_key => 当我调用item.vote_count
时,我在某些 UUID 值上遇到以下异常: “ArgumentError:UTF-8 中的字节序列无效”。
当然,原始 UUID 只是一个字节序列(编码:ASCII-8BIT),但是当 ActiveRecord 构造 SQL 查询时,它会尝试将其解释为 UTF-8 字符串。
我怎样才能告诉它只将字节序列传递给MySQL?
Environment: Ruby 1.9.2, Rails 3.0.1
Two MySQL tables: 1. items, 2. vote_counts (every row represents the number of users who voted on an item)
Since the tables are big and I need to shard them, I am using UUIDs. The uuid column is defined in both tables: uuid
varbinary(16) NOT NULL.
I defined a has_one association in item model: has_one :vote_count, :foreign_key => "uuid", :primary_key => "uuid"
When I call item.vote_count, I am getting the following exception on some UUID values:
"ArgumentError: invalid byte sequence in UTF-8".
Of course the raw UUID is just a sequence of bytes (Encoding:ASCII-8BIT), but when ActiveRecord constructs a SQL query, it tries to interpret it as a UTF-8 string.
How can I tell it to just pass the byte sequence to MySQL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否使用类似的方法
来生成 UUID?
我们使用它,并使用 mysql 和 postgres 数据库将其分配给模型中的字符串字段。注意:我们不使用它们作为密钥。就像模型中的常规字段一样。
Are you using something like
to generate the UUID?
We use this and we assign it to a string field in our models using both mysql and postgres DBs. note: we are not using them as keys. Just as regular fields in the model.