0
我将在Django的测试包含Unicode字符线时遇到了此问题时:在MySQL的归类非法混合插入的Unicode数据库
InternalError: (1267, u"Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='")
罪魁祸首:
نعليقات و
那么现在我做了一些研究,并建议我做:
SET collation_connection = 'utf8_general_ci'
ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
我跟着这个例子,做了这个而不是在Django:
cursor = connection.cursor()
cursor.execute('SHOW TABLES')
results = []
for row in cursor.fetchall():
results.append(row)
cursor.execute(
'ALTER DATABASE mydb CHARACTER SET utf8mb4 '
'COLLATE utf8mb4_general_ci;')
for row in results:
cursor.execute(
'ALTER TABLE %s CONVERT TO CHARACTER SET utf8mb4 '
'COLLATE utf8mb4_general_ci;' % (row[0]))
注:为什么我需要它是MB4的原因是因为我需要支持表情符号:
Happy Birthday! タクミ!
我有这样的: '选项':{ '字符集': 'utf8mb4'}, –
您可能还需要'use_unicode';我不知道。 –