Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@kzthrk

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

概要

環境

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
1
Help us understand the problem. What are the problem?