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

permata mysql2, Rails 3.0.3 dan kesalahan penyandian karakter yang tidak kompatibel

Saya memiliki masalah yang sama:bidang varchar dengan collation utf8_bin memiliki penyandian ASCII-8BIT.

Masalahnya terletak pada permata mysql2, bukan di Rails, atau di pengaturan mysql, setidaknya dalam kasus saya, karena itu tidak terjadi dengan permata Ruby-mysql.

Harap uji apakah masalahnya hilang saat Anda beralih ke ruby-mysql.

Kode berikut, dijalankan dari irb pada ruby ​​1.9.2, menunjukkan masalahnya:

require 'mysql2'
c = Mysql2::Client.new(host: "localhost", username: "root", database: 'd')
c.query("select word from t where word = 'a'").to_a[0]["word"].encoding
# => #<Encoding:ASCII-8BIT>

Ini pada database mysql di mana setiap pengaturan yang mungkin telah diatur ke susunan utf8_bin.

Di permata mysql2, di result.c file pada baris 253, ada cuplikan berikut:

if (fields[i].flags & BINARY_FLAG) {
  rb_enc_associate(val, binaryEncoding);
} else ...

Saya percaya ini adalah tempat pengkodean biner (ASCII-8BIT) sedang diatur, mungkin karena susunan utf8_bin... Saya telah menghapusnya, dan itu memecahkan masalah, tapi saya yakin itu mungkin akan menimbulkan masalah lain, dengan gumpalan misalnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dalam mengakses fungsi yang seharusnya dinonaktifkan di CODEIGNITER

  2. Koneksi Server Android ke Wamp menggunakan Android Studio dan PHP

  3. Tentukan panjang maksimum yang diizinkan dalam kolom di mysql

  4. Kesalahan fatal MySQL:Tidak dapat membuka dan mengunci tabel hak istimewa:Format file 'pengguna' salah

  5. Injeksi SQL tidak berfungsi dengan benar