Ruby on rails 3 铁轨:;UTF-8中的字节序列无效;按UUID设置has_one关联时出现异常

Ruby on rails 3 铁轨:;UTF-8中的字节序列无效;按UUID设置has_one关联时出现异常,ruby-on-rails-3,activerecord,encoding,uuid,Ruby On Rails 3,Activerecord,Encoding,Uuid,环境:Ruby 1.9.2、Rails 3.0.1 两个MySQL表:1。项目2。投票计数(每行代表对某个项目投票的用户数) 由于表很大,我需要对它们进行切分,所以我使用UUID。uuid列在两个表中都有定义:uuidvarbinary(16)NOTNULL 我在项目模型中定义了一个has\u one关联:has\u one:vote\u count,:foreign\u key=>uuid,:primary\u key=>uuid 当我调用item.vote_count时,某些UUID值出现以

环境:Ruby 1.9.2、Rails 3.0.1

两个MySQL表:1。项目2。投票计数(每行代表对某个项目投票的用户数)

由于表很大,我需要对它们进行切分,所以我使用UUID。uuid列在两个表中都有定义:
uuid
varbinary(16)NOTNULL

我在项目模型中定义了一个has\u one关联:has\u one:vote\u count,:foreign\u key=>uuid,:primary\u key=>uuid

当我调用item.vote_count时,某些UUID值出现以下异常: “ArgumentError:UTF-8中的字节序列无效”

当然,原始UUID只是一个字节序列(编码:ASCII-8BIT),但当ActiveRecord构造SQL查询时,它会尝试将其解释为UTF-8字符串


我如何告诉它只将字节序列传递给MySQL?

您使用的是

UUIDTools::UUID.random_create.hexdigest[0, 8]
要生成UUID


我们使用它,并在使用mysql和postgres DBs的模型中将其分配给字符串字段。注意:我们不使用它们作为键。与模型中的常规字段一样。

您使用的是哪个MySQL驱动程序(以及哪个版本)?MySQL对所讨论的列有什么编码?驱动程序:mysql2版本0.2.6表有utf8编码,但这对varbinary列重要吗?这里有解决方案吗@如果将UUID存储在数据库中的字符串列中,则此问题不是问题,但与varbinary(16)相比,以这种方式存储UUID是一种严重的空间浪费。