mysql2驱动程序似乎写了无效的查询

时间:2011-04-21 01:33:15

标签: ruby-on-rails ruby mysql2

我正在开发一个由其他人开发的rails应用程序之上的应用程序层。

他的应用程序使用一个名为request_logger的模块写入一个表,在ruby1.8 / rails2 / mysql gem下工作正常,但是在我的ruby1.9 / rails3 / mysql2环境中,activerecord翻了过来,提示生成的查询无效。

显然,所有的mysql关系名都用双引号括起来而不是反引号。

对activerecord本身的调用只是用

设置了一堆属性
log.attributes = {
    :user_id => user_id,
    :controller => controller,
    ...etc
}

然后调用

log.save

所以我倾向于它不是狡猾的调用。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

mysql2适用于很多人,但是它毫无顾忌地牺牲了对MySQL C API的一致性,以提高常见任务的性能。也许,如果request_logger足够低,它就会期望存在不存在的调用。

切换回使用mysql是微不足道的 - 尝试一下,如果有效,请坚持下去。请务必更改Gemfileconfig/database.yml设置。

答案 1 :(得分:0)

结果是导轨2和3之间的行为似乎发生了变化(我们在导轨2中的设置相同)

我们使用database.yml指定一个(空)“master”数据库,然后使用分片+章鱼为我们的客户端提供数据。

为了简单起见,master db是sqlite,似乎activerecord正在将为sqlite格式化的请求提供给mysql2分片,无论它们的适配器类型如何。