mysqlでERROR 1366 (HY000): Incorrect string value
が発生。
原因は、
のように、character_set_clientでutf-8を指定しているのに、shift_jisで
insert使用としたから、
mysql> set character_set_client = sjis;
mysql> set character_set_results = sjis;
で、character_set_clientとcharacter_set_resultsをshift_jisにすれば、OK。
取り消し線よりも、my.iniの[mysql]セクションを
[mysql]
#default-character-set=utf8
default-character-set=sjis
上記のように変更したほうがよい。(取り消し線だと、まいど設定し直しになる。)
こうすることで、
character_set_client、character_set_connection、character_set_resultsがShiftJISに変わる。
理屈は以下、
character_set_client
クライアントから渡された SQL 文はこの文字コードであると解釈される。
character_set_connection
キャラクタセットイントロデューサ (例えば『_ujis'ほげ'』)が省略された
SQL 文中の文字列リテラルはこの文字コードであると解釈される。
character_set_results
サーバーがクライアントに返す結果をこの文字コードに変換する。
この変数を NULL にセットすると、結果に対する文字コード変換をしないよ
うにできる。
そのまんま
が発生。
原因は、
mysql> show variables like 'character%'; +--------------------------+-------------------- | 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_set_clientでutf-8を指定しているのに、shift_jisで
insert使用としたから、
mysql> set character_set_results = sjis;
で、character_set_clientとcharacter_set_resultsをshift_jisにすれば、OK。
取り消し線よりも、my.iniの[mysql]セクションを
[mysql]
#default-character-set=utf8
default-character-set=sjis
上記のように変更したほうがよい。(取り消し線だと、まいど設定し直しになる。)
こうすることで、
character_set_client、character_set_connection、character_set_resultsがShiftJISに変わる。
理屈は以下、
character_set_client
クライアントから渡された SQL 文はこの文字コードであると解釈される。
character_set_connection
キャラクタセットイントロデューサ (例えば『_ujis'ほげ'』)が省略された
SQL 文中の文字列リテラルはこの文字コードであると解釈される。
character_set_results
サーバーがクライアントに返す結果をこの文字コードに変換する。
この変数を NULL にセットすると、結果に対する文字コード変換をしないよ
うにできる。
そのまんま