From 6c9cfd64ca5e35445e4fdcc822dbdcd5b2339d87 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 3 Dec 2005 23:04:34 +0000 Subject: [PATCH] MySQL: work around ruby-mysql/mysql-ruby inconsistency with mysql.stat. Eliminate usage of mysql.ping because it doesn't guarantee reconnect. Explicitly close and reopen the connection instead. References #428. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3216 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ .../connection_adapters/mysql_adapter.rb | 16 +++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 44f00e0418..f5c6f84ae8 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* MySQL: work around ruby-mysql/mysql-ruby inconsistency with mysql.stat. Eliminate usage of mysql.ping because it doesn't guarantee reconnect. Explicitly close and reopen the connection instead. [Jeremy Kemper] + * Added preliminary support for polymorphic associations [DHH] * Added preliminary support for join models [DHH] diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index c43a84a386..6327840752 100755 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -155,18 +155,20 @@ module ActiveRecord else @connection.query 'select 1' end - true + + # mysql-ruby doesn't raise an exception when stat fails. + if @connection.respond_to?(:errno) + @connection.errno.zero? + else + true + end rescue Mysql::Error false end def reconnect! - if @connection.respond_to?(:ping) - @connection.ping - else - @connection.close rescue nil - connect - end + @connection.close rescue nil + connect end