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