Abbiamo recentemente effettuato l'aggiornamento da MySQL 5.1.41 a 5.1.61 sul nostro server Ubuntu 10.04LTS. Abbiamo un antico web app RoR che sta ora dando un errore di stretta di mano cattiva:Ruby on Rails MySQL # 08S01Bad handshake - downgrade di MySQL?
Mysql::Error in MainController#index
#08S01Bad handshake
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/vendor/mysql.rb:523:in `read'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/vendor/mysql.rb:153:in `real_connect'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapter.rb:389:in `connect'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapter.rb:152:in `initialize'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapter.rb:82:in `new'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapter.rb:82:in `mysql_connection'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:262:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:262:in `connection_without_query_cache='
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/query_cache.rb:54:in `connection='
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:230:in `retrieve_connection'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:78:in `connection'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:763:in `columns'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:2060:in `attributes_from_column_definition_without_lock'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/locking/optimistic.rb:45:in `attributes_from_column_definition'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1502:in `initialize_without_callbacks'
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/callbacks.rb:225:in `initialize'
#{RAILS_ROOT}/app/controllers/application.rb:48:in `new'
#{RAILS_ROOT}/app/controllers/application.rb:48:in `log_info'
/usr/local/bin/mongrel_rails:19:in `load'
/usr/local/bin/mongrel_rails:19
Googled intorno e siamo imbattuti in http://bugs.ruby-lang.org/issues/5017 che mi dice che è un'estensione bug rubino MySQL. Non stiamo usando la gemma MySQL. La nostra app Web è incredibilmente vecchia e fragile (Ruby v1.8.7, Rails v1.2.3, Mongrel 1.1.5). Stiamo per rimpiazzarlo con una riscrittura di Django, quindi dobbiamo solo renderlo funzionale per le prossime settimane fino a quando non lo sostituiremo con il nuovo sito.
Come possiamo superare questo errore? Sto pensando che il downgrade a MySQL 5.1.41 sia il modo migliore per gestirlo, e quindi quando inizieremo a utilizzare il nuovo sito tra qualche settimana, potremo eseguire nuovamente l'aggiornamento a 5.1.61. Tuttavia, sto riscontrando un problema di downgrade di mysql. Questo è il comando che sto usando:
sudo aptitude install mysql-server-5.1=5.1.41-3ubuntu12.10
Tuttavia, questo mi dice Unable to find a version "5.1.41-3ubuntu12.10" for the package "mysql-server-5.1"
. Ho provato anche sudo aptitude install mysql-server-5.1=5.1.41
, ma non ha funzionato. Come posso installare aptitude la versione corretta di MySQL?
* Sto pensando che il downgrade a MySQL 5.1.41 è il modo migliore per gestire questa situazione * Se il codice di connessione al database è centralizzato , forse usa la soluzione alternativa nel tuo link? * Una soluzione alternativa per evitare questo problema è non impostare un database quando si stabilisce la connessione. * –
Forse è solo che non sono così familiare con RoR, ma non sono sicuro di come farlo. Le impostazioni di connessione al database sono in 'config/database.yml', e non sono sicuro di come il sito possa interfacciarsi con MySQL senza specificare il nome del database in quel file. Ho provato a commentare il nome del database, ma ottengo un nuovo errore: 'Nessun database specificato. Argomento mancante: database. – Geoff
Ho appena riscontrato lo stesso problema durante l'aggiornamento da .49 a .61. Su Debian Squeeze, downgrade con: 'sudo aptitude install mysql-server-5.1 = 5.1.49-3 mysql-client-5.1 = 5.1.49-3 mysql-common = 5.1.49-3 mysql-server-core-5.1 = 5.1.49-3 libmysqlclient16 = 5.1.49-3'. – gsreynolds