Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ruby on Rails MySQL #08S01Jabat tangan yang buruk - turunkan versi MySQL?

Alih-alih menurunkan versi permata MySQL, parameter nama database dapat diperbaiki untuk memperbaiki "bad handshake" masalah.

Saya menemukan ini:https://github.com/rubygems/rubygems/issues/423 Ini bekerja dengan baik.

Alih-alih melakukan peretasan di real_connect itu mungkin untuk menambahkan "\0" di config/database.yml

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

EDIT
Jika Anda menggunakan solusi dengan \0 di akhir nama database. Anda mungkin akan menemukan ini dan menyelesaikannya sendiri, tetapi saya tetap menyebutkannya:
(setidaknya dalam versi Rails saya )
Menggunakan string database dengan \0 pada akhirnya memberikan masalah saat melakukan rake test . Ini dimulai dengan menghapus database pengujian sebelum menyalin definisi database pengembangan, dan kemudian menggunakan string perintah SQL yang menyertakan nama database pengujian. Ini akan menyebabkan kesalahan karena \0 di tengah string.

Dalam kasus saya, saya menggunakan database pengembangan lokal yang tidak memberikan masalah jadi saya tidak perlu memiliki \0 dengan nama tersebut.
Berikut adalah alternatif hack untuk mengatasinya (kode asli di 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. Pilih satu nilai dari grup berdasarkan pesanan dari kolom lain

  2. Bagaimana cara memasukkan file ke database MySQL?

  3. kueri mySQL mengembalikan id Sumber Daya # 5

  4. Kesalahan 1215:Tidak dapat menambahkan batasan kunci asing

  5. Permata MySQL di OSX 10.7 Lion