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

claf1314 · 发布于 2017年05月17日 · 最后由 msg7086 回复于 2017年05月19日 · 670 次阅读
27225

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

共收到 11 条回复
27225

@huacnlee 能否解答一下

De6df3

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

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

27225
De6df3huacnlee 回复

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

4755

@claf1314 你用的 mysql2 adapter?

27225
4755martin91 回复

是的

27225
4755martin91 回复

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

4755
27225claf1314 回复

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

4755
27225claf1314 回复

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

27225
4755martin91 回复

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#那个错误。

15139

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

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

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