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

claf1314 · May 17, 2017 · Last by msg7086 replied at May 19, 2017 · 1787 hits

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

@huacnlee 能否解答一下

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

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

Reply to huacnlee

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

@claf1314 你用的 mysql2 adapter?

Reply to martin91

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

Reply to claf1314

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

Reply to claf1314

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

Reply to 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 应该是不支持那个数据库的。

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

You need to Sign in before reply, if you don't have an account, please Sign up first.