应用程序从 Rails 5.2 升级到 6.0 后运行 rspec 时出现 PG::ConnectionBad(连接已关闭)

2023-12-15

我尝试将我的应用程序从 Rails 5.2 升级到 6.0,升级后运行rspec它会引发错误PG::ConnectionBad: connection is closed.

该错误是由表达式引起的ActiveRecord::Migration.maintain_test_schema! in rails_helper.rb错误如下,

root@00de976cbbd4:/app# rspec

An error occurred while loading rails_helper.
Failure/Error: ActiveRecord::Migration.maintain_test_schema!

PG::ConnectionBad:
  connection is closed
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/quoting.rb:21:in `escape_string'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/quoting.rb:21:in `quote_string'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/quoting.rb:220:in `_quote'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/quoting.rb:144:in `_quote'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/quoting.rb:18:in `quote'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/schema_statements.rb:750:in `quoted_scope'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/schema_statements.rb:727:in `data_source_sql'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/schema_statements.rb:62:in `table_exists?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/internal_metadata.rb:32:in `table_exists?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/tasks/database_tasks.rb:347:in `schema_up_to_date?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:594:in `block in load_schema_if_pending!'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:593:in `all?'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:593:in `load_schema_if_pending!'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:614:in `block in maintain_test_schema!'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:867:in `suppress_messages'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:619:in `method_missing'
# /usr/local/bundle/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:614:in `maintain_test_schema!'
# ./spec/rails_helper.rb:30:in `<top (required)>'
No examples found.
No examples found.

我可以启动RAILS_ENV=test rails c并运行ActiveRecord::Migration.maintain_test_schema!在控制台中没有错误。并且还尝试从3.10.1 to 4-0-dev但仍然遇到同样的错误。提前致谢。


最后我创建了一个新的rails 6应用程序,然后逐个文件复制以检查导致此错误的原因,事实证明,在我的spec/support文件夹中有一个文件shared_db_conntection.rb其中有以下内容,是从这个博客复制的http://blog.plataformatec.com.br/2011/12/ Three-tips-to-improve-the-performance-of-your-test-suite/

class ActiveRecord::Base
  mattr_accessor :shared_connection
  @@shared_connection = nil

  def self.connection
    @@shared_connection || retrieve_connection
  end
end

ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection

删除这个文件后就没有这样的错误了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序从 Rails 5.2 升级到 6.0 后运行 rspec 时出现 PG::ConnectionBad(连接已关闭) 的相关文章

随机推荐

  • Math.max 和 Math.min 输出允许的最高和最低值

    所以我试图制作一个程序来输出总和 平均值 最小值和最大值 我基本上已经弄清楚了除了最小和最大值输出 2147483647 和 2147483647 之外的所有内容 我相信这是 Java 将计算的绝对最小和最大值 无论如何 我想计算用户输入的
  • 如何在警报对话框中设置警报文本大小

    默认情况下的警报消息对于屏幕较小的特定设备来说太大 我想将其设置为自定义 dp 我的警报是这样的 OnClickListener addNewItemListener new OnClickListener public void onCl
  • 嵌入仅限 Perl 的模块以及嵌入式 Perl 解释器

    我跟着https perldoc perl org perlembed并成功建立了interp二进制 当我使用static ext 输出目录有 pm文件安装到前缀目录中 如何添加自定义简单 pm模块如TLUtils pm无需将模块文件解压到
  • Python,字符串中字符的具体计数

    我正在尝试计算 python 中字符串出现的次数 我想采用二进制输入 例如 001101 然后计算 1 0 11 00 等的数量 我试图通过使用 count 来实现这一点 但是当我只希望它输出 1 1 和 1 11 时 这会输出有 3 个
  • Python 2.x 可选子解析器 - 错误参数太少

    我一直在尝试设置一个带有两个子解析器的主解析器 以便在单独调用时 主解析器会显示一条帮助消息 def help message print help message import argparse parser argparse Argum
  • C 中二分查找的第一次和最后一次出现

    我试图了解如何修改二进制搜索 使其适用于第一次和最后一次出现 当然我可以在网上找到一些代码 但我试图深入理解 这里是一些基本的非递归二进制搜索我发现 int BinarySearch int array int number of elem
  • 更改快速选择器的悬停颜色

    是否可以通过设置更改快速选择器所选选项的颜色 要保留当前主题并仅更改此颜色 请在设置中找到 工作台 颜色自定义 然后单击 在 settings json 中编辑 然后将以下内容添加到屏幕右侧的用户设置中 workbench colorCus
  • 推荐的c# winform控件包[关闭]

    Closed 这个问题是无关 目前不接受答案 我正在寻找商业 免费推荐的 c winform 控件包 开发快递 我试过了组件一 DevExpress 和Telerik
  • 将 NSString 绘制到 UIImage

    我有一个 NSString 对象 我想将其写入现有的 UIImage 对象 UIImage 对象已经有一些与之关联的图像 我想将字符串写入同一张图像 我如何实现它 编辑 以下是实现编辑 UIImage 并在其上写入文本的基本步骤 从 UII
  • Tomcat 使用 Windows 证书存储进行 SSL

    我使用 Tomcat 9 0 10 并希望使用 Windows 证书存储来保存 SSL 私钥和证书 有这里是另一个线程 这似乎有答案 但是启动 Tomcat 时出现异常 我的 server xml 如下所示
  • 如何捕获Retrofit android中的异常

    我已将类定义如下 我在这里使用了 dagger 和 Retrofit 我正在尝试做什么 我正在努力抓住OfflineException在下面的请求中 如何在主活动中正确捕获它 请求拦截器 java public class RequestI
  • 通过更改 Android 中的应用程序语言来更改默认手机语言?

    有没有办法通过更改应用程序的语言来更改手机的语言 我的意思是 当我更改应用程序的语言时 默认手机语言也会更改 对此有什么想法请在这里分享 提前致谢 我不知道它可以通过编程方式更改 但是在更改应用程序语言后 您也可以要求用户更改设备语言 要求
  • 使用 MySql、PHP 和 ADODB 在准备好的语句中参数化 IN 子句

    我正在编写一些 SQL 并使用 AdoDb 连接到我的数据库并运行查询等 我正在使用参数化查询并遇到了障碍 它们是一种将值数组传递给 AdoDb MySql 中的 in clause 进行参数化的方法 我的问题是 如果我传递一个准备好的字符
  • 在 C/C++ 中编写“指向某物的指针”的好方法

    在 C C 中是否有一种 好 的方法来编写 指向某物的指针 我用来写void foo char str 但有时我发现这很不合逻辑 因为str是 指向 char 的指针 那么附加 应该更合乎逻辑 到类型名称 指针的书写有规则吗 char st
  • VideoView 位于 SurfaceView 之上

    我尝试展示一个VideoView在一个上面SurfaceView 但它不可见 但会对点击做出反应 MediaController 出现并播放声音 该视频似乎是在后面播放的SurfaceView所以我也尝试利用setZOrderMediaOv
  • Facebook 单点登录无法在 Windows 10 设备上运行的 Windows Phone 8.1 应用程序中运行

    我已经提到过this使用 facebook 应用程序实现 facebook 登录的链接 效果很好 从 Facebook 应用程序登录后 它会重定向到我的应用程序 但是当我在 Windows 10 设备上运行此应用程序时 Facebook 应
  • CoreData多对多关系

    CoreData中如何操作多对多关系 例如 我有 2 个实体 食谱和配料 CoreData 像食谱 gt 成分一样链接它们 现在我需要为配方中的每种成分添加属性 计数 我该怎么做 Thanks Core Data 会为您负责对象图一致性维护
  • 未知的服务器标记“ajaxToolkit:HtmlEditorExtender”

    我正在使用 ajaxcontrols 并且所有控件都运行良好但我没有找到任何名为 HtmlEditorExtender 的控件 所以我刚刚在 html 页面中复制了此标签
  • SingleWrite 与 TripleWrite

    我非常清楚何时何地使用 SingleWrite 作为 MQ 中的日志算法是有利的 它有利于高吞吐量 低并发工作负载 当工作负载更加并发时 TripleWrite 的开销就不那么重要了 我不明白并且正在努力寻找任何有关 TripleWrite
  • 应用程序从 Rails 5.2 升级到 6.0 后运行 rspec 时出现 PG::ConnectionBad(连接已关闭)

    我尝试将我的应用程序从 Rails 5 2 升级到 6 0 升级后运行rspec它会引发错误PG ConnectionBad connection is closed 该错误是由表达式引起的ActiveRecord Migration ma