sql >> Database teknologi >  >> RDS >> Mysql

mysql2 gem, Rails 3.0.3 og inkompatible tegnkodningsfejl

Jeg har et lignende problem:et varchar-felt med kollation utf8_bin med en ASCII-8BIT-kodning.

Problemet ligger i mysql2-perlen, ikke i Rails, og heller ikke i mysql-indstillingerne, i hvert fald i mit tilfælde, fordi det ikke forekommer med ruby-mysql-perlen.

Test venligst, om problemet forsvinder, når du skifter til ruby-mysql.

Følgende kode, der køres fra irb på ruby ​​1.9.2, demonstrerer problemet:

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>

Dette på en mysql-database, hvor alle tænkelige indstillinger er sat til en utf8_bin-kollation.

I mysql2-perlen, i result.c fil på linje 253, er der følgende uddrag:

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

Jeg tror, ​​det er her, den binære (ASCII-8BIT) kodning bliver indstillet, måske på grund af utf8_bin-sorteringen... Jeg har fjernet det, og det løste problemet, men jeg er sikker på, at det sandsynligvis vil introducere andre problemer, med klatter for eksempel.




  1. MySQL Hibernate-forbindelsesproblem under brug af c3p0

  2. Får fejl ved tilknytning af PostgreSQL LTREE-kolonnen i dvale

  3. Sådan opretter du en tabel fra en anden tabel i SQL

  4. Hvordan opretter man tabel ved hjælp af udvælgelsesforespørgsel i SQL Server?