mysql
  • django
  • unicode
  • 2017-05-31 5 views 0 likes 
    0

    に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' 
    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 
    

    私はこの例に続き、これをしませんでした代わりに、ジャンゴに:

    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の設定にはいくつかのcharsetとuse_unicodeオプションがあることが示唆されています。あなたがそこに何を持っているか、特にそれが解決策を提供しているかどうかを示してください。

    +0

    私はこれを持っています: 'OPTIONS':{'charset': 'utf8mb4'}、 –

    +0

    'use_unicode'も必要です。私は知らない。 –

    関連する問題