mysql2 gem随机崩溃

时间:2019-01-10 23:07:20

标签: ruby-on-rails ruby mysql2

我正在将我们的应用程序升级到Rails 5。 我已经升级到ruby 2.4.5,然后使用Rails 5.2.2升级了我们gemfile中的所有gem。 mysql2 gem是0.5.2。 我正在运行测试,并且随机出现Mysql2 :: Error

 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/mysql/database_statements.rb:45:in `affected_rows'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/mysql/database_statements.rb:45:in `block in exec_delete'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:196:in `execute_and_free'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/mysql/database_statements.rb:45:in `exec_delete'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:168:in `delete'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `delete'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/relation.rb:409:in `delete_all'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/querying.rb:10:in `delete_all'

另一个Mysql2错误:

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

 ActiveRecord::StatementInvalid:
   Mysql2::Error::ConnectionError: MySQL server has gone away: BEGIN
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `_query'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `block in query'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `handle_interrupt'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `query'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:187:in `block (2 levels) in execute'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activesupport-5.2.2/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activesupport-5.2.2/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activesupport-5.2.2/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:186:in `block in execute'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activesupport-5.2.2/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:185:in `execute'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/mysql/database_statements.rb:28:in `execute'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `begin_db_transaction'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/transaction.rb:175:in `initialize'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/transaction.rb:201:in `new'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/transaction.rb:201:in `block in begin_transaction'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/transaction.rb:197:in `begin_transaction'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `begin_transaction'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/fixtures.rb:975:in `block in setup_fixtures'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/fixtures.rb:974:in `each'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/fixtures.rb:974:in `setup_fixtures'
 # /usr/local/rvm/gems/ruby-2.4.5@clm/gems/activerecord-5.2.2/lib/active_record/fixtures.rb:860:in `before_setup'
 # ------------------
 # --- Caused by: ---
 # Mysql2::Error::ConnectionError:
 #   MySQL server has gone away
 #   /usr/local/rvm/gems/ruby-2.4.5@clm/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `_query'

然后重新运行相同的测试,我遇到了一些malloc崩溃:

ruby(73560,0x70000d9c0000) malloc: *** error for object 0x7f9bdb234000: pointer being freed was not allocated
ruby(73560,0x70000d9c0000) malloc: *** set a breakpoint in malloc_error_break to debug

然后重新运行测试,有时会出现SEG错误:

/usr/local/rvm/gems/ruby-2.4.5@clm/gems/mysql2-0.5.2/lib/mysql2/client.rb:131: [BUG] Segmentation fault at 0xffffffffffffffe1
ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-darwin18]

但是我从来没有让我的测试正常运行,而且它永远不会在同一地点发生。相同的测试可以在Ruby 2.2.9,带有mysql2 0.4.10的Rails 4.2.8上完美运行。 几天来,我一直在尝试用Google搜索这个问题,但没有成功。这些版本不是最近的版本,我看不出问题出在哪里。我试图卸载mysql2,然后重新安装它。 我在Mac上安装了mysql 5.7。我使用的是Mac OS 10.14.2。

请告知。

0 个答案:

没有答案