«Mysql :: Ошибка: запрос: не подключен» при использовании двух разных баз данных - PullRequest
0 голосов
/ 29 июня 2011

Где-то в нашем Ruby-коде есть три строки, которые (в настоящее время (для целей отладки)) выглядят так:

puts "Established connection to: " \
    "#{ActiveRecord::Base.establish_connection(database_config).spec.config}"
puts "Connection is connected to: " \
    "#{ActiveRecord::Base.connection.instance_eval{@config.inspect}}
ActiveRecord::Base.connection.execute("SELECT 1") # Test connection

Когда этот код активирован, первая строка всегда печатает

Established connection to: {:username=>"name", :host=>"localhost", :password=>"pass",
                            :adapter=>"mysql", :database=>"database1"}

сообщает нам, что соединение установлено успешно.Обычно вторая и третья строки выполняются как положено, и все идет своим чередом.Затем вторая строка выдает результат такого же типа:

Connection is connected to: {:username=>"name", :host=>"localhost", :password=>"pass",
                            :adapter=>"mysql", :database=>"database1"}

Однако по какой-то причине, время от времени (например, дважды при выполнении нескольких сотен тестовых случаев), вторая строка выдает:

Connection is connected to: {:username=>"name", :host=>"localhost", :password=>"pass",
                            :adapter=>"mysql", :database=>"database2"}

(обратите внимание на другую базу данных), а третья строка завершается с

Mysql::Error: query: not connected: SELECT 1
$APP_ROOT/vendor/bundle/ruby/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `log': Mysql::Error: query: not connected: SELECT 1 (ActiveRecord::StatementInvalid)
from $APP_ROOT/vendor/bundle/ruby/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/mysql_adapter.rb:289:in `execute'
from $APP_ROOT/somewhere_in_our_code.rb:84:in `establish_database_connection' (which is the third line quoted above)

(я думаю, что вы можете игнорировать там "StatementInvalid": это действительный MySQLзапрос и использование StatementInvalid в этом сообщении кажется незначительной ошибкой в ​​коде ActiveRecord)

Так, по какой-то причине, между установлением соединения и получением соединения для привязки к потоку, ActiveRecord запутывается,Кто-нибудь знает, почему это может происходить?

CentOS Linux, Ruby 1.8.7 (Enterprise Edition 2011.03), Rails 3.0.4, MySQL 2.8.1.

Почти во всех случаяхоб этой ошибке вы можете найти в сети о понижении версии mysql DLL в системах Windows, что здесь не применимо.

1 Ответ

0 голосов
/ 12 июля 2011

Причиной была проблема в драгоценном камне огурцов, как указано здесь: https://github.com/cucumber/cucumber-rails/issues/152

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...