将unicode插入数据库时MySQL中排序规则的非法混合
在django测试期间插入包含unicode字符的行时,我遇到此错误:将unicode插入数据库时MySQL中排序规则的非法混合,mysql,django,unicode,Mysql,Django,Unicode,在django测试期间插入包含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'
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,是因为我需要支持表情符号:
生日快乐!タクミ! 是的,utf8mb4是必需的
但是错误与拉丁语1有关。这可能表示连接未设置为utf8
我的paultry笔记表明Django配置有一些字符集并使用unicode选项。请告诉我们您有什么,特别是如果它提供了解决方案的话。我有这样一个:'OPTIONS':{'charset':'utf8mb4'},