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

mysql2 gem, Rails 3.0.3 и несъвместими грешки в кодирането на знаци

Имам подобен проблем:поле varchar с сортиране utf8_bin с ASCII-8BIT кодиране.

Проблемът се крие в скъпоценния камък mysql2, а не в Rails, нито в настройките на mysql, поне в моя случай, защото не се среща с скъпоценния камък ruby-mysql.

Моля, проверете дали проблемът изчезва, когато преминете към ruby-mysql.

Следният код, стартиран от irb на ruby ​​1.9.2, демонстрира проблема:

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>

Това в база данни на mysql, където всяка възможна настройка е зададена на utf8_bin съпоставяне.

В скъпоценния камък mysql2, в result.c файл на ред 253, има следния фрагмент:

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

Вярвам, че тук се задава двоичното (ASCII-8BIT) кодиране, може би заради съпоставянето на utf8_bin... Премахнах го и това реши проблема, но съм сигурен, че вероятно ще въведе други проблеми, с петна например.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. текуща средна стойност в mysql

  2. NodeJS MySQL - Как да разберем дали връзката е освободена или не

  3. сложни резултати от MySQL заявка

  4. JPA Native заявка получава единичен обект

  5. mySQL - Трябва ли да денормализирам?