You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails中执行原生SQL报错求助:如何正确编写原生SQL?

问题解决思路

核心原因是你用错了数据库连接:

  • Sf::Program.count用的是该模型专属的数据库连接(对应Salesforce的数据库/schema)
  • ActiveRecord::Base.connection调用的是Rails默认的主数据库连接,和模型用的不是同一个,自然找不到salesforce.program__c表

解决方法

方法1(推荐):直接用模型的连接执行原生SQL

直接调用Sf::Program模型的connection对象来执行查询,和执行.count时用的是同一个连接,肯定能找到表:

Sf::Program.connection.exec_query('SELECT COUNT(*) FROM "salesforce"."program__c"')

方法2:切换到对应数据库连接后执行

如果一定要用ActiveRecord::Base的连接,需要先切换到Salesforce对应的数据库配置(假设你的database.yml里有:salesforce这个连接项):

# 切换到Salesforce连接
ActiveRecord::Base.establish_connection(:salesforce)
# 执行查询
ActiveRecord::Base.connection.exec_query('SELECT COUNT(*) FROM "salesforce"."program__c"')
# 用完记得切回主连接,避免影响后续操作
ActiveRecord::Base.establish_connection(:primary)

这种方法要注意切回主连接,不然后续操作会跑到Salesforce数据库上,容易出问题。

内容的提问来源于stack exchange,提问作者Fernando Maymone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:35:21