0

我正在其他人开发的 Rails 应用程序之上开发应用程序层。

他的应用程序使用一个名为 request_logger 的模块写入表,在 ruby​​1.8/rails2/mysql gem 下运行良好,但在我的 ruby​​1.9/rails3/mysql2 环境中,activerecord 崩溃,提示生成的查询无效。

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

对 activerecord 本身的调用只是设置了一堆属性

log.attributes = {
    :user_id => user_id,
    :controller => controller,
    ...etc
}

然后打电话

log.save

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

4

2 回答 2

1

mysql2对很多人来说工作得很好,它毫不掩饰地牺牲了对 MySQL C API 的一致性以实现常见任务的性能。也许,如果 request_logger 足够低级,它期望存在的调用不存在。

切换回使用是微不足道的mysql- 试一试,如果有效,请坚持使用。请记住更改您Gemfile和您的config/database.yml设置。

于 2011-04-21T06:00:09.050 回答
0

事实证明,rails 2 和 3 之间的行为似乎发生了变化(我们在 rails 2 中有相同的设置工作正常)

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

为简单起见,主数据库是 sqlite,并且似乎 activerecord 正在将针对 sqlite 格式化的请求提供给 mysql2 分片,而不管它们的适配器类型如何。

于 2011-04-21T06:39:58.903 回答