Mysql2 :: Error:#MySQL客户端未连接-使用rspec的Rails 6.0.2.2; Ruby 2.6.4 mac os Catalina + Mojave

问题描述 投票:0回答:1

我在Rails 6.0.2.2上遇到MySQL这个非常奇怪的间歇性问题,RSpec 4.0.0.rc1,Ruby 2.6.4

在两台单独的Mac上,一台正在运行macOS Mojave,另一台正在运行MacOS Catalina

有趣的是,运行Catalina的Mac似乎很少这样做,尽管它仍然这样做。该故障是间歇性的,似乎在套件中再次出现故障后立即发生,但是即使我已经修复了最初的故障规格,但在以后的运行中经常会继续出现(大约占测试套件的一半)。

  1) Template 
     Failure/Error: _query(sql, @query_options.merge(options))

     ActiveRecord::StatementInvalid:
       Mysql2::Error: MySQL client is not connected
     # /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
     # /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
     # /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
     # /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
     # /Users/jason/.rvm/gems/ruby-2.6.4/gems/rspec-wait-0.0.9/lib/rspec/wait.rb:46:in `block (2 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # Mysql2::Error:
     #   MySQL client is not connected
     #   /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'

mysql ruby-on-rails ruby rspec
1个回答
0
投票

当我将个人笔记本电脑(Mac OS Catalina)设置为在家工作时,我开始遇到这个问题。在此过程中,我将环境从Ruby 2.4.7更新到2.6.3,并将gems系统从3.0.6更新到3.1.2。毫无疑问,我们捆绑的宝石也进行了增量更新。我无法确定是哪个更改导致了新的,看似随机且间歇的故障。

[Google首先带领我来到这里,其次是关于最小问题的讨论:https://github.com/seattlerb/minitest/issues/744

然后,仔细观察我的测试,我发现第一个失败的测试总是会触发一个异步方法。

我将此添加到了config/environments/test.rb文件:

config.active_job.queue_adapter = :inline

并且所有测试再次通过。

我不知道这是解决方案还是解决方法。我不确定异步进程之前是否正在运行,或者之前是否已对其进行内联处理并且默认行为已更改。我们目前进行的测试并未专门验证异步性。因此,目前,这解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.