Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql2 मणि, रेल 3.0.3 और असंगत वर्ण एन्कोडिंग त्रुटियां

मुझे एक ही समस्या है:एक varchar फ़ील्ड जिसमें संयोजन utf8_bin है जिसमें ASCII-8BIT एन्कोडिंग है।

समस्या mysql2 मणि ​​में है, न कि रेल में, न ही MySQL सेटिंग्स में, मेरे मामले में कम से कम, क्योंकि यह रूबी-माइस्क्ल मणि के साथ नहीं होती है।

जब आप रूबी-माइस्क्ल पर स्विच करते हैं तो कृपया परीक्षण करें कि क्या समस्या दूर हो जाती है।

निम्नलिखित कोड, रूबी 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. मैं pymysql का उपयोग करके संग्रहीत प्रक्रिया के माध्यम से pyodbc mssql क्वेरी से MySQL में लौटाई गई सूची कैसे सम्मिलित कर सकता हूं?

  3. मिनीक्यूब से लोकलहोस्ट पर चल रहे mysql को एक्सेस करें

  4. डुप्लिकेट कुंजी अद्यतन पर सशर्त

  5. मैसकल - सभी टैग से मेल खाने वाली आईडी चुनें