对于#<ActiveRecord::ConnectionAdapters::MysqlAdapter>未定义的方法`explain'。[英] undefined method `explain&#39; for #<ActiveRecord::ConnectionAdapters::MysqlAdapter

本文是小编为大家收集整理的关于对于#<ActiveRecord::ConnectionAdapters::MysqlAdapter>未定义的方法`explain'。的处理方法,想解了对于#<ActiveRecord::ConnectionAdapters::MysqlAdapter>未定义的方法`explain'。的问题怎么解决?对于#<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 的变化(不知道).

我需要不同的 gem 来将 rails 连接到 mysql 数据库吗?任何有关检查内容的建议将不胜感激(:

推荐答案

我猜你正在使用 Rails 3.2 并且你的 Beer.all 调用花费了太长时间.来自 3.2 发行说明:

<块引用>

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

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

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

development:
  adapter: mysql2

本文地址:https://www.itbaoku.cn/post/786605.html