سؤال

لدي قاعدتي بيانات MySQL منفصلتين فعليًا ويجب علي تشغيل استعلام واحد عليهما.

يحتوي الاستعلام على قسم من SQL يبدو كما يلي:

and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci

يعمل بشكل جيد على قاعدة البيانات أ ولكن في قاعدة البيانات ب أحصل على هذا الخطأ:

ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

إذا قمت بإزالة الترتيب فإنه يعمل بشكل جيد على قاعدة البيانات B ولكن في قاعدة البيانات A أحصل على هذا الخطأ:

ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation 'like'

هل هناك نسخة من الاستعلام سيتم تشغيلها على قاعدتي البيانات؟

أو هل هناك تكوين يمكنني تغييره في أي من قاعدتي البيانات لجعل الاستعلام سعيدًا في كلا المكانين؟

تحديث:

قاعدة البيانات A هي الإصدار 5.1.38 ، قاعدة البيانات B هي الإصدار 5.1.34

هل كانت مفيدة؟

المحلول

بعض الواعدة المعلومات هنا.

تحديث: لقد أدت الاقتراحات الواردة في هذا الرابط إلى حل مشكلتي، على الرغم من أن بناء الجملة قديم بعض الشيء ولم يعد عليك تحويل كل عمود بعد الآن، فقط الجدول.

ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top