MySQL - مزيج غير شرعي من المجموعات (UTF8_GENERAL_CI ، القسري) و (LATIN1_SWEDISH_CI ، ضمنيًا) لعملية "الاتحاد"

StackOverflow https://stackoverflow.com/questions/183446

سؤال

كيف يمكنني إصلاح هذا الخطأ مرة واحدة وإلى الأبد؟ أريد فقط أن أكون قادرًا على القيام بالنقابات في MySQL.

(أنا أبحث عن اختصار ، مثل خيار لجعل MySQL يتجاهل هذه المشكلة أو خذ أفضل تخمين ، لا أتطلع إلى تغيير المجموعات على 100s من الجداول ... على الأقل ليس اليوم)

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

المحلول

لست متأكدًا من MySQL ولكن في MSSQL ، يمكنك تغيير الترتيب في الاستعلام ، لذلك على سبيل المثال إذا كان لديك جدولين مع ترتيب مختلف وتريد الانضمام إليهم أو كما هو الحال في Unition Cate Union يمكنك القيام به

select column1 from tableWithProperCollation
union all
select column1 COLLATE SQL_Latin1_General_CP1_CI_AS from tableWithDifferentCollation

بالطبع sql_latin1_general_cp1_ci_as هو مجرد مثال على الترتيب الذي تريد "تحويله" إلى

نصائح أخرى

شكرا كريستوف. في هذه الحالة ، كان سببها اختيار حرفي في الاختيار الأول ، وليس من أي مجموعات جدول مختلفة.

ومن المفارقات أنني حصلت عليها من خلال اتباع هذا منشور المدونة القديم لقد صنعت لهذه القضية.

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

ALTER DATABASE databasename COLLATE utf8_unicode_ci;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top