1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【メモ】MySQLで日本語カラムにInsert:どハマリ

Last updated at Posted at 2018-10-31

概要

環境

Virtual Box/Ubuntu 18.04 LTS/MySQL 5.7

やりたいこと

日本語をvarcharのカラムに格納したいが、エラーになるのをなんとかしたい。

戻ってくるエラーは以下のような感じ。(不正確)

SQL Error [1366] [HY000]: Incorrect string value: なんちゃらかんちゃら for column ほげほげ at row 1

ここでお帰りになるべき方

以下をご存じの方は、ここでお帰りください。

  • MySQLはカラムにも文字コードがあり、テーブル作成済みなら当然染みてる。

ことの発端

Node.js/MySQLでSequelizeを使おうとして、クライアントコマンドからmigrationファイルを作って適当にテーブル作ってたらはまった。

手順

必要な状態

これで、

mysql> status;

この状態

Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8

これで

mysql> show variables like 'char%';

この状態

+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

手順

Google先生に聞けば、いくつも引っかかるので肝心の手順は割愛。
基本的には、設定ファイルに以下のような設定をして回る感じ。

default-character-set = utf8

一つだけ、

character-set-server=utf8

こんな感じのがあった気がする...

確認

で、再起動しても当然すでに作ってあるものはことごとくUTF-8ではない。
なので、ことごとくUTF-8に変更して回る。

DBとかテーブルとか、、、でも、エラーは解消せず。が、今日のハマリポイント。
** カラムも忘れず変更しましょう。 **

誰かの記事で、散々チェックして直らなくて、作り直したら上手くいったという報告を見かけたが、多分これ系の話かな?

まとめ

カラムにも文字コード(ってかキャクター・セットとキャラクター・エンコーディングはごちゃ混ぜ?)あるんだな。つーか、今時デフォルトがlatin1ってなんだよ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?