- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
最近我将 PostgreSQL 添加到我的应用程序中,该应用程序已经在 MySQL 上运行,现在应用程序在两个数据库上运行。我能够在不同数据库中存在的表之间建立关联,并且它的工作正常。今天我在一个页面中添加了一个搜索功能,该页面使用两个数据库中存在的表并抛出错误。花了一整天试图找出错误,但没有成功。请查看关联,代码并帮助我更正它。
我有 4 个表:-
公司(mysql)
位置(mysql)
报告(PostgreSQL)
报告类别(PostgreSQL)
模型 - company.rb
establish_connection Rails.env+"_postgres"
has_many :reports
establish_connection Rails.env
belongs_to :location
位置.rb
has_many :companies
报告.rb
establish_connection Rails.env
belongs_to :company
establish_connection Rails.env+"_postgres"
belongs_to :report_category
报告类别.rb
establish_connection Rails.env+"_postgres"
has_many :report
现在从 View 中我传递搜索参数并在我的 reports_controller 中写入
@reports = Report.where("companies.name like ? and report_category.name ?", params[:company], params[:category]).includes(:company, :report_category)
执行此行后出现以下错误
ActiveRecord::StatementInvalid: PGError: ERROR: relation "companies" does not exist
但是
Company.where("location.name like ?", params[:location]).includes(:location)
或
Report.where("report_categories.name like ?", params[:category]).includes(:report_category)
工作得很好。如果我使用两个数据库进行搜索,我只会收到错误消息。请帮忙
最佳答案
首先,我想支持评论中的建议,即您将所有内容都移到一个数据库中。这为您节省了很多复杂性。但是,如果您真的做不到,有几种方法可以从 PostgreSQL 中访问 MySQL 表,这将是完全迁移的二等解决方案,但它会起作用。
在 PostgreSQL 9.1 及更高版本中,您可以使用 MySQL 的外部数据包装器进行只读查询。在早期版本中,您可以使用 David Fetter 的 DBI-Link 项目建立连接。
然后,这些允许您将数据作为统一数据库呈现给您的应用程序。
关于ruby - PGError : ERROR: relation "companies" does not exist( postgresql , mysql, rails 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009713/
我在 SQL 查询中使用了一个简单的 IF NOT EXISTS/WHERE NOT EXISTS 语句(我都尝试过),但我总是收到 mysql 错误,不知道为什么。尝试使用不同的引号,检查我的 My
我有 2 个表:tbl1 和 tbl2。我想从 tbl1 返回一行,其中包含以下列:col1、col2、col3、can_be_deleted 、有重要项目。这个想法是,can_be_deleted
如果您是 "t1".persona_1_id = 2,则预期结果应返回 persona_id = 4。 like --- id persona_1_id persona_2_id liked 1 2
我遇到了这个用于执行幂等插入的 github SQL 代码示例。完全按照我想要的方式工作。我不想使用 EXISTS,因为我觉得它有点困惑。可以使用联接对相同的操作进行编码吗? 下面是我在 github
public bool CheckTblExist(string TblName) { try { string cmTxt = "s
表1 Id Name DemoID 1 a 33 2 b 44 3 c 33 4 d 33 5 e 44 表2 Id DemoID IsT
我对 SQL 非常陌生。我想知道当我使用“IF EXISTS”或“IF NOT EXISTS”时会发生什么。例如:以下两个语句有什么区别: 语句 1:(存在) IF EXISTS( SELECT OR
我正在更新 exist-db 集合中的 XML 文件,我必须检查是否存在 id 以决定是否必须在我的文档中替换或插入某些内容。 我注意到随着文件的增长,查询执行时间显着恶化,我决定为我的文件添加一个索
我有一个正在尝试更新的数据库,但我不明白为什么会收到有关不存在的列的奇怪错误。当我使用“heroku pg:psql”访问数据库时,我完全可以看到该列。我找到了couple其他questions遇到类
我有一个这样的查询 SELECT ... FROM ... WHERE (SELECT EXISTS (SELECT...)) which did not return anything th
我有一个可以对数据库执行插入和更新的程序,我从 API 获取数据。这是我得到的示例数据: $uname = $get['userName']; $oname = $get['offerNa
我的批处理文件中有这个脚本 -- if not exist "%JAVA_HOME%" ( echo JAVA_HOME '%JAVA_HOME%' path doesn't exist) -
有没有办法让 Directory.Exists/File.Existssince 区分大小写 Directory.Exists(folderPath) 和 Directory.Exists(folde
考虑使用这两个表和以下查询: SELECT Product. * FROM Product WHERE EXISTS ( SELECT * FROM Codes
我正在使用 Subclipse 1.6.18 使用 Eclipse 3.72 (Indigo) 来处理 SVN 1.6 存储库。这一切都在 Ubuntu 下运行。 我有一个项目,在我更新我的 Ecli
我正在尝试使用 Terraform 配置 Azure 存储帐户和文件共享: resource "random_pet" "prefix" {} provider "azurerm" { versi
我有兴趣为需要使用 NOT EXISTS 的应用程序编写查询。子句来检查一行是否存在。 我正在使用 Sybase,但我想知道一般 SQL 中是否有一个示例,您可以在其中编写具有 NOT EXISTS
我正在尝试使用 Terraform 配置 Azure 存储帐户和文件共享: resource "random_pet" "prefix" {} provider "azurerm" { versi
下面是代码示例: CREATE TABLE #titles( title_id varchar(20), title varchar(80)
我曾经这样编写 EXISTS 检查: IF EXISTS (SELECT * FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET
我是一名优秀的程序员,十分优秀!