Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ruby on Rails MySQL #08S01 Zły uścisk dłoni - downgrade MySQL?

Zamiast obniżać wersję gem MySQL, możliwe jest poprawienie parametru nazwy bazy danych, aby naprawić "bad handshake" problem.

Znalazłem to:https://github.com/rubygems/rubygems/issues/423 Działa dobrze.

Zamiast hackowania w real_connect można dodać "\0" w config/database.yml

production:
  database: "itsalive_production\0"
  adapter: mysql
  host: localhost
  encoding: UTF8
  ...

EDYTUJ
Jeśli używasz rozwiązania z \0 na końcu nazwy bazy danych. Prawdopodobnie sam się tego dowiesz i rozwiążesz, ale mimo to wspominam o tym:
(przynajmniej w mojej wersji Railsów )
Korzystanie z ciągu bazy danych z \0 na koniec daje problem podczas wykonywania rake test . Rozpoczyna się od usunięcia testowej bazy danych przed skopiowaniem definicji programistycznych baz danych, a następnie przy użyciu ciągu poleceń SQL, który zawiera nazwę testowej bazy danych. Spowoduje to błąd z powodu \0 w środku ciągu.

W moim przypadku używam lokalnej bazy danych deweloperskiej, która nie sprawia żadnego problemu, więc nie muszę mieć \0 w tej nazwie.
Oto alternatywny sposób na rozwiązanie tego problemu (oryginalny kod w mysql_adapter.rb ):

module ActiveRecord
  module ConnectionAdapters
    class MysqlAdapter

      alias_method :old_execute, :execute

      def execute(sql, name = nil) #:nodoc:
        # This is needed because database names can end with "\0" to fix
        # the issue with "handshake" when mysql server is newer than the gem
        # requires. E.g. called when loading the new test db when doing "rake test".
        sql = sql.delete("\0")

        old_execute(sql, name)
      end
    end
  end
end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. c3p0 maxIdleTime to to samo co wait_timeout z mysql?

  2. Kiedy wybrać Oracle zamiast MySQL?

  3. Czasy eksportu danych MySQL zmieniają się

  4. Jak wyświetlić dodatkowe rekordy w wierszu podrzędnym tabeli danych z odpowiednim identyfikatorem?

  5. MySql - faza powolnego wysyłania danych