Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

環境

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ってなんだよ。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした