【发布时间】:2012-03-05 21:34:42
【问题描述】:
使用 Rails 3.1.1,我在生产中偶尔会遇到错误,似乎 mysql 查询上的绑定参数由于某种原因不存在。错误如下所示:
A ActiveRecord::StatementInvalid occurred in events#show:
Mysql::Error: : SELECT `events`.* FROM `events` WHERE `events`.`id` = ? LIMIT 1
activerecord (3.1.1) lib/active_record/connection_adapters/mysql_adapter.rb:890:in `execute
在任何插入或选择上都不一致,所以我无法追踪它。有人有什么建议吗?
编辑:更新为更简单的示例。
#events_controller.rb
def show
@event = Event.find(params[:id])
...
end
#called with parameters: {"action"=>"show", "controller"=>"events", "id"=>"26"}
【问题讨论】:
-
您能否发布用于生成
view_ips表、app/models/view_ip.rb文件内容和videos#viewed操作的迁移?这些将使我们能够帮助您。 -
您可以尝试向模型对象添加验证,以便在问题进入数据库之前将其捕获。我的猜测是,这实际上不是与 MySQL 相关的问题。
-
这是用于创建
ViewIp的代码,您在多少个地方这样做?向我们展示代码。将日志记录添加到代码中,以便您知道哪个实际方法/条目导致 nil 值。然后检查它们在哪里以及如何变为 nil。祝你好运。 -
尝试将 Rails 升级到 3.1.4 看看这是否只是一个错误。
标签: mysql ruby-on-rails activerecord