Rails Rails MySQL 数据库查询总会执行 SHOW FULL FIELDS FROM `emp`语句,能否限制不执行

claf1314 · 2017年05月17日 · 最后由 msg7086 回复于 2017年05月19日 · 804 次阅读

项目选的数据库是阿里云的分析型数据库,不支持 SHOW FULL FIELDS FROM emp语句,所以每次查询都报错,能否在执行查询的时候限制一下不执行这个语句。

共收到 11 条回复

@huacnlee 能否解答一下

描述不够清楚,贴场景的日志

ActiveRecord 在首次载入内存的时候,会执行类似的语句,以便于 Model 可以准备 Attributes

huacnlee 回复

就是获取了一个对象,取它的属性就会报错,数据库是不支持SHOW FULL FIELDS FROM语法的。

@claf1314 你用的 mysql2 adapter?

martin91 回复

是的

martin91 回复

你好,我如何把这个方法例外不执行呢。

claf1314 回复

可以从 mysql2adapter 继承一个自己的 adapter 实现,然后覆盖上面的方法实现,就绕开了。

claf1314 回复

我看了下,阿里云的这个分析型数据库好像是不支持查表列结构的,能否看下你相关的代码,这样可以确认是否可以直接跳过SHOW FULL COLUMNS...

martin91 回复

Model

class Customer < ActiveRecord::Base
  establish_connection :ads
  self.table_name = 'advisor'
  self.primary_key = "advisor_id"
end

Controller

def clue
    debugger
    @c= Customer.select(:advisor_id).where("advisor_id = ?", 270562276528131)
    p @c.advisor_id
    respond_to do |format|
      format.html.none
      format.js
    end
  end

@c这个对象能获得,取对象的属性就会报3#那个错误。

我觉得Rails应该是不支持那个数据库的。

你要强行支持的话得自己魔改……

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册