mysql
  • django
  • unicode
  • 2017-05-31 57 views 0 likes 
    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! タクミ! 
    

    回答

    0

    是,utf8mb4是必要的。

    但是錯誤與latin1有關。這可能指示連接未設置爲utf8。

    我paultry筆記表明,Django的配置具有一定的字符集和use_unicode選項。請告訴我們你在那裏,特別是如果提供解決方案。

    +0

    我有這樣的: '選項':{ '字符集': 'utf8mb4'}, –

    +0

    您可能還需要'use_unicode';我不知道。 –

    相關問題