Mysql
 sql >> база данни >  >> RDS >> Mysql

Ruby on Rails MySQL #08S01Лошо ръкостискане - понижаване на MySQL?

Вместо да понижавате MySQL gem, е възможно да коригирате параметъра на името на базата данни, за да коригирате "bad handshake" проблем.

Намерих това:https://github.com/rubygems/rubygems/issues/423 Работи добре.

Вместо да правите хак в real_connect възможно е да добавите "\0" в config/database.yml

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

РЕДАКТИРАНЕ
Ако използвате решението с \0 в края на името на базата данни. Вероятно ще разберете това и ще го решите сами, но все пак го споменавам:
(поне в моята версия на Rails )
Използване на низа на базата данни с \0 в края дава проблем при извършване на rake test . Започва с изтриване на тестовата база данни преди копиране на дефинициите на базата данни за разработка и след това с използване на SQL команден низ, който включва името на тестовата база данни. Това ще доведе до грешка заради \0 в средата на низа.

В моя случай използвам локална база данни за разработка, която не създава никакъв проблем, така че не е необходимо да имам \0 на това име.
Ето алтернативен хак за решаване на това (оригинален код в 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. YEARWEEK() Примери – MySQL

  2. MySQL дава на редовете цял живот

  3. MySQL INSERT IF (персонализирани оператори if)

  4. mysqli последното вмъкване на идентификатор

  5. MySQL CAST – Как да въведете Cast в MySQL