🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

3120閲覧

(DB)MySQL上での日本語入力について

YukiTani

総合スコア19

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/03/13 02:49

編集2021/03/13 04:47

前提・実現したいこと

mysqlにrootユーザーでログイン後
insert intoを使い、日本語を入力すると、日本語部分だけ反応されず表示されない。
utf8に変えれば、この問題も解消されるとおもっていたのですが、解消することができません。

php

1# 入力までの流れ 23dpkg-reconfigure localesの設定で、 [*] ja_JP.UTF-8 UTF-8 に設定しました。(元々「*」あった場合、スペースキーで「*」を取り除く)、次に「ja_JP.UTF-8」を選択し、Enterキーを押す。 4 5root@5f2895303966:/# echo $LANG 6jp_JP.UTF-8 7root@5f2895303966:/# locale 8すべて"jp_JP.UTF-8"になっている。 9 10root@5f2895303966:/# mysql -u root -p --default-character-set=utf8mb4 11mysql> INSERT INTO `categories` (`id`, `created_at`, `updated_at`, `is_deleted`, `name`) VALUES 12 -> (NULL, NOW(), NOW(), 0, ''), やはり日本語入力ができない。 13 1415# mysqlコンテナに入る 16% docker-compose exec mysql bash 17 18# mysqlにrootユーザーでログイン->パスワードが求められるので入力 19root@5f2895303966:/# mysql -u root -p 20Enter password: xxx 21mysql> INSERT INTO `categories` (`id`, `created_at`, `updated_at`, `is_deleted`, `name`) VALUES 22 -> (NULL, NOW(), NOW(), 0, '洋画'), と入力しても 23 -> (NULL, NOW(), NOW(), 0, ''), のように''になってしまう。

該当のソースコード

php

1 2root@5f2895303966:/# locale 3locale: Cannot set LC_CTYPE to default locale: No such file or directory 4locale: Cannot set LC_MESSAGES to default locale: No such file or directory 5locale: Cannot set LC_ALL to default locale: No such file or directory 6LANG=jp_JP.UTF-8 7LANGUAGE= 8LC_CTYPE="jp_JP.UTF-8" 9LC_NUMERIC="jp_JP.UTF-8" 10LC_TIME="jp_JP.UTF-8" 11LC_COLLATE="jp_JP.UTF-8" 12LC_MONETARY="jp_JP.UTF-8" 13LC_MESSAGES="jp_JP.UTF-8" 14LC_PAPER="jp_JP.UTF-8" 15LC_NAME="jp_JP.UTF-8" 16LC_ADDRESS="jp_JP.UTF-8" 17LC_TELEPHONE="jp_JP.UTF-8" 18LC_MEASUREMENT="jp_JP.UTF-8" 19LC_IDENTIFICATION="jp_JP.UTF-8" 20LC_ALL=jp_JP.UTF-8 21 22# 日本語設定 23mysql> SHOW VARIABLES LIKE '%char%'; 24+--------------------------+----------------------------+ 25| Variable_name | Value | 26+--------------------------+----------------------------+ 27| character_set_client | utf8 | 28| character_set_connection | utf8 | 29| character_set_database | utf8 | 30| character_set_filesystem | binary | 31| character_set_results | utf8 | 32| character_set_server | utf8 | 33| character_set_system | utf8 | 34| character_sets_dir | /usr/share/mysql/charsets/ | 35+--------------------------+----------------------------+ 368 rows in set (0.01 sec) 37 38root@5f2895303966:/# vi /etc/my.cnf 39 40[mysqld] 41# character-set-server=utf8 (コメントアウトにすると入力出来ると知ったので、コメントアウトしたが、入力できない。) 42 43[mysql] 44default-character-set=utf8 45[mysqld] 46character-set-server=utf8 47[mysqldump] 48character-set-server=utf8 49 50

試したこと

php

12#もともと、「";${LANG}"」になっていたので、「"jp_JP.UTF-8"」変更 3$ export LANG=jp_JP.UTF-8 4root@5f2895303966:/# locale 5locale: Cannot set LC_CTYPE to default locale: No such file or directory 6locale: Cannot set LC_MESSAGES to default locale: No such file or directory 7locale: Cannot set LC_ALL to default locale: No such file or directory 8LANG=ja_JP.UTF-8 9LANGUAGE= 10LC_CTYPE=";${LANG}" 11LC_NUMERIC=";${LANG}" 12LC_TIME=";${LANG}" 13LC_COLLATE=";${LANG}" 14LC_MONETARY=";${LANG}" 15LC_MESSAGES=";${LANG}" 16LC_PAPER=";${LANG}" 17LC_NAME=";${LANG}" 18LC_ADDRESS=";${LANG}" 19LC_TELEPHONE=";${LANG}" 20LC_MEASUREMENT=";${LANG}" 21LC_IDENTIFICATION=";${LANG}" 22LC_ALL=\;${LANG} 23 24② 3つの文章は 25a,locale: Cannot set LC_CTYPE to default locale: No such file or directory 26b,locale: Cannot set LC_ALL to default locale: No such file or directory 27c,locale: Cannot set LC_MESSAGES to default locale: No such file or directory 28$ sudo vi /etc/environment 29LANG=jp_JP.utf-8 30LC_ALL=jp_JP.utf-8 31:wq! 32と入力すると a,bは解消されると書いてあったが解消されず、、 33

補足情報(FW/ツールのバージョンなど)

image mysql:5.7
Laravel Framework 5.8.38
docker
mac OS Catalina 10.15.7
mysql Ver 14.14 Distrib 5.7.33, for Linux (x86_64) using EditLine wrapper
mysqld Ver 5.7.33 for Linux on x86_64 (MySQL Community Server (GPL))

参考記事

https://teratail.com/questions/144933

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/03/13 02:57

入力、とはどこでどのように? あとLaravelもPHPも関係ないのでは
YukiTani

2021/03/13 03:06

mysqlコンテナに入り、rootユーザーでログインし、「INSERT INTO `categories` (`id`, `created_at`, `updated_at`, `is_deleted`, `name`) VALUES」で打ち込んでいきます。次に-> (NULL, NOW(), NOW(), 0, '洋画'), と入力しても'洋画'の箇所が' 'となって、表示されません。タグ削除しました。
AbeTakashi

2021/03/13 05:49

一つ前の質問でもアドバイスしましたが、今の学習レベルなら無理にDockerを使わずに別の開発環境に変えた方が良いと思います。Dockerでいちいちコンテナに入ってmysqlコマンド叩くとか、別に間違ってはいないけどDockerの使われ方としては王道じゃないというか。だからコンテナ内の環境も最低限MySQLが動けば良いレベルのものにしかなっていませんし、日本語環境なんて何それ状態です。こういうところで躓くより、まずはMySQLやPHPを中心にしっかり学習できる環境の方が望ましいと思います。 WindowsならLaragon(これは自分は使ったことないのですが)、MacならMAMPあたりはどうでしょう。MySQLやPHPの学習が進んで余裕が出てきたところでLinuxなどの基礎を学ぶようにして、VagrantなりDockerなりにステップアップしたらいいと思います。自分の学習レベルをふまえつつ、学習効率も考えて進めていった方がいいかと。急がば回れです。
YukiTani

2021/03/13 07:25

仰るとおりです。現在やっているものがもう少すぐ終わるので、次からはMAMPを使ってやっていきたいと思います。MAAPでlaravelの事が一通りできるようになったら、dockerなどにステップアップします。
guest

回答1

0

ベストアンサー

root@5f2895303966:/# mysql -u root -p

mysql -u root -p --default-character-set=utf8mb4

投稿2021/03/13 03:40

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2021/03/13 03:43

locale不足の場合は dpkg-reconfigure locales と打ってja_JP.UTF-8を選択して作る事
YukiTani

2021/03/13 04:24 編集

コメントありがとうございます。もう一度dpkg-reconfigure localesで設定しました。exitで抜けたあと、 再度mysqlコンテナに接続をして「locale」で確認したところ、LC_CTYPEなどが、すべて"POSIX"にかわってしまいました。https://gyazo.com/3c577bab3be9866ee044a24e2a43dde3 本文一番上 「#入力までの流れ」に追記しました。
hentaiman

2021/03/13 04:27

なんでexitすんの?
hentaiman

2021/03/13 04:39

あと何のイメージ使ってるか知らないけどmysqlのイメージ使ってるならdefault-charcter-setなくても問題無かった
YukiTani

2021/03/13 05:11

イメージはmysql:5.7を使用しています。 exitをしてしまっていたので、もう一度やり直してやってみましたが、やはり日本語入力ができませんでした。 dpkg-reconfigure localesでutf-8に設定済み、[export LANG=jp_JP.UTF-8]でLANGUAGE= LC_CTYPE="jp_JP.UTF-8"などをすべてutf8に設定してあります。
YukiTani

2021/03/13 05:13

/etc/my.cnf、viコマンドで[mysqld] # character-set-server=utf8 をコマンドアウトしてありますが、ここは問題ありませんでしょうか?
hentaiman

2021/03/13 05:23

晒してあるshow variables見る限り関係無いな こちらはmysql8のイメージでutf8mb4使っていてdpkg-reconfigure localesとLC_ALLとLANG設定し接続すれば日本語打てるので こちらとそちらの差異はmysqlの文字コードの差とmysqlバージョンの差ぐらいですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問