对于#<ActiveRecord :: ConnectionAdapters :: MysqlAdapter,未定义的方法`explain'

我是Ruby on Rails的新手,但我已经学过一些教程,并且知道我的方法。 我已经生成了一些脚手架并将数据插入到MySql数据库中。

导航到index.html.erb时,我收到标题中的错误

控制器正在执行索引

def index @beers = Beer.all respond_to do |format| format.html # index.html.erb format.json { render :json => @beers } end end 

并将此作为一种结构

 Beer: id, brewer_id, name, price, score, color, brew_type, create_at, updated_at 

RoR正在为我创建的其他脚手架工作,并列出数据。 我更新了实体Beer的mysql结构,它可能没有反映rails的变化(dunno)。

我是否需要一个不同的gem来将rails连接到mysql db? 任何关于检查什么的建议都将受到赞赏(:

我猜你正在使用Rails 3.2并且你的Beer.all电话花了太长时间。 从3.2发行说明 :

在开发模式下会自动解释运行时间超过半秒的查询。 当然,这个阈值可以改变。

如果我们看一下Rails的MySQL适配器 ,就没有explain方法。 但是, MySQL2适配器确实理解explain

首先,你可能需要更少的啤酒或一些分页。 然后,您应该尝试切换到MySQL2适配器; 只需通过编辑Gemfile来安装新的适配器以使用mysql2 ,运行bundle来设置新的东西,然后将database.yml更改为更像这样:

 development: adapter: mysql2