PythonでMySQLにデータを追加しようとしたら、エラーメッセージが出力された。
Warning: (1366, “Incorrect string value: ‘\\xE3\\x81\\xBB\\xE3\\x81\\x92…’ for column ‘hogehoge’ at row 1”)
調べたところ、文字コードに問題があるようだ。
現状の文字コード。
SHOW variables LIKE '%char%'; # +--------------------------+--------------------------------+ # | Variable_name | Value | # +--------------------------+--------------------------------+ # | character_set_client | cp932 | # | character_set_connection | cp932 | # | character_set_database | latin1 | # | character_set_filesystem | binary | # | character_set_results | cp932 | # | character_set_server | latin1 | # | character_set_system | utf8 | # | character_sets_dir | C:\xampp\mysql\share\charsets\ | # +--------------------------+--------------------------------+
utf8に合わせることにする。
Windowsなので、my.iniファイルを編集する。
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
修正後、MySQLを再起動する。
再度、文字コードを確認する。
# +--------------------------+--------------------------------+ # | Variable_name | Value | # +--------------------------+--------------------------------+ # | character_set_client | utf8 | # | character_set_connection | utf8 | # | character_set_database | utf8 | # | character_set_filesystem | binary | # | character_set_results | utf8 | # | character_set_server | utf8 | # | character_set_system | utf8 | # | character_sets_dir | C:\xampp\mysql\share\charsets\ | # +--------------------------+--------------------------------+
my.iniの設定を変更しても相変わらずエラーがでるので更に調べたら、
テーブルのカラムごとに文字コードの照合順序があるということがわかった。
コマンドがわからなかったので、phpMyAdminからutf8_binに修正したところ、エラーがでなくなった。
コメント