gpt4 book ai didi

ruby - PGError : ERROR: relation "companies" does not exist( postgresql , mysql, rails 3)

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:11 27 4
gpt4 key购买 nike

最近我将 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com