私はマックが分かりませんが
最近マック使われる方が多くて仕事柄よく聞かれます。
linuxはよく知っているので vi 使えや!! っていいたいのですが
マック派はvi使い切らないそうです。
エラー事象
mysql> insert into items (category,name,price,quantity,created_at) values (‘tops’,’花柄ブラウス’,3600,4,now());
ERROR 1366 (HY000): Incorrect string value: ‘\xE8\x8A\xB1\xE6\x9F\x84…’ for column ‘name’ at row 1
以下対処方法です。
Mac版MySQLで日本語データのinsertがエラーになる時の対処方法
1.まず、以下のような問題がないか確認する。
– 日本語をinsertするデータ型はvarcharになっているか?
– 日本語の指定部分は正しく「’」または「”」で囲まれているか?
(全角の文字になっていないか? 特にMacはエディタによっては
自動的に全角やバッククオートに変換してしまうことがあるので注意)
– そもそも正しいinsert文になっているか?
2.insert文の指定が正しそうであれば、
MySQLのコマンドで以下を投入する
mysql> show variables like ‘chara%’;
+————————–+———————————————————–+
| Variable_name | Value |
+————————–+———————————————————–+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/charsets/ |
+————————–+———————————————————–+
character_set_serverの欄がutf8の場合
→本資料で説明する問題とは別の問題なので、別の可能性を探る。
character_set_serverの欄がutf8以外(latin1等)の場合
本資料に沿って、サーバーの文字コードをutf8に変更する。
3./etc/my.cnfの存在を確認する。
ターミナルのシェルコマンドで、以下を投入する。
# ls /etc/my.cnf
「/etc/my.cnf」と表示されたらファイルは存在する→4へ
「ls: /etc/my.cnf: No such file or directory」と表示されたらファイルは存在しない→5へ
4./etc/my.cnfが存在する場合、そのファイルをホームディレクトリへコピーする
# cp /etc/my.cnf ~/
成功すると何も表示されず、次のコマンド入力待ちになる。
6.へ
5./etc/my.cnfが存在しない場合、ホームディレクトリで新規作成する。
# touch ~/my.cnf
成功すると何も表示されず、次のコマンド入力待ちになる。
6.ホームディレクトリのmy.cnfを編集する。
以下のコマンドを投入
# open -e ~/my.cnf
すると、テキストエディットが立ち上がり
my.cnfの内容が表示されるので、以下の記述を追記し、テキストエディットを終了する。
————————————————
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
————————————————
既に[mysqld]セクションや[clinet]セクションが定義されている場合は、
それぞれのセクション定義場所にutf8を指定する行を追記する
7.テキストエディットを終了したら、編集したmy.cnfを/etcにコピーする
# sudo cp ~/my.cnf /etc
→Password:と表示されたら、Macにログインする時のパスワードを入力する。
パスワード文字を入れても何も反応がないように見えるが、実際には文字は入力されているので
そのままパスワード文字を入れてEnterする。
正しいパスワードを入れたら、成功しても何も表示されず、再度入力待ちになる。
8./etc/my.cnfに正しくコピーできたか確認する。
# cat /etc/my.cnf
ファイル内容が表示されるので、自分で編集した結果が表示されていればOK
9.Macを再起動する。
Macの画面上部メニュー 最左のアップルマーク – 再起動
を選択してMacを再起動する
(「システム環境設定」のMySQLアイコンでMySQL Serverを停止/再起動してもよい)
10.再起動後、MySQLにログインし、以下のコマンドを投入
mysql> show variables like ‘chara%’;
+————————–+———————————————————–+
| 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 | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/charsets/ |
+————————–+———————————————————–+
character_set_filesystem以外がutf8になっていれば、設定変更は成功している。
11.設定変更前に作成したデータベースを一旦削除して作り直す。
(設定変更前に作ったデータベースは、以前の文字コードを使用した状態で作られているので、
新しい文字コードを使ったもので作り直す必要がある)