次のチェックリストを検討してください。
-
MySQL構成ファイル(/ etc / my)を確認しましたか。 cnf) ?次のようになります:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
そして、次の方法で確認できます:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+ 10 rows in set (0.00 sec)
-Mathiasのブログ投稿 に感謝します
-
したがって、PythonとMySQLの間で使用されるUTF-8を強制します。
# Connect to mysql. dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True) # Create a cursor. cursor = dbc.cursor() # Enforce UTF-8 for the connection. cursor.execute('SET NAMES utf8mb4') cursor.execute("SET CHARACTER SET utf8mb4") cursor.execute("SET character_set_connection=utf8mb4") # Do database stuff. # Commit data. dbc.commit() # Close cursor and connection. cursor.close() dbc.close()
- Stackoverflowに関するTomaszNguyenの回答 に感謝します
-
MySQLからの公式ヒント
Can't initialize character set
について :このエラーには、次のいずれかの原因が考えられます。
-
文字セットはマルチバイト文字セットであり、クライアントでの文字セットはサポートされていません。この場合、
-DDEFAULT_CHARSET=charset_name
を指定してCMakeを実行し、クライアントを再コンパイルする必要があります。 または-DWITH_EXTRA_CHARSETS=charset_name
オプション。セクション2.9.4、“ MySQL Source-Configurationオプション」 。 -
すべての標準MySQLバイナリは、-
DWITH_EXTRA_CHARSETS=complex
でコンパイルされます。 、これにより、すべてのマルチバイト文字セットのサポートが可能になります。セクション2.9.4、“ MySQL Source-Configurationオプション」 。 -
文字セットはmysqldにコンパイルされていない単純な文字セットであり、文字セット定義ファイルはクライアントがそれらを見つけることを期待している場所にありません。
この場合、問題を解決するには、次のいずれかの方法を使用する必要があります。
-
文字セットをサポートしてクライアントを再コンパイルします。セクション2.9.4、“ MySQL Source-Configurationオプション」 。
-
文字セット定義ファイルが配置されているディレクトリをクライアントに指定します。多くのクライアントでは、
--character-sets-dir
を使用してこれを行うことができます オプション。 -
文字定義ファイルを、クライアントが期待するパスにコピーします。
-
-