質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

2回答

1358閲覧

コマンドプロンプトでMySQLを操作すると文字化け

hattositegoo

総合スコア2

MySQL

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2021/06/29 05:25

編集2021/06/29 05:55

前提・実現したいこと

コマンドプロンプト上でMySQLを操作すると、日本語入力した部分が文字化けするか、入力自体を受け付けません。これを解決するには、どこを変更すれば良いのでしょうか?

発生している問題・エラーメッセージ

■MySQL(MariaDB)の書式
MariaDB [(none)]> 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 | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+

■コマンドプロンプトの書式
chcp → 現在のコードページ : 932

この状態で既存のデータを表示すると、日本語部分(2行目・name)が文字化けします。
MariaDB [shop_items]> SELECT * FROM items;
+----+-----------+-------+-------+
| no | name | price | stock |
+----+-----------+-------+-------+
| 1 | orange | 150 | 30 |
| 2 | 繝ャ繝「繝ウ | 100 | 15 |
+----+-----------+-------+-------+

ちなみに構造は以下の通り。
MariaDB [shop_items]> describe items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| no | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
| stock | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+

また、新たにレコードを追加しようとすると、以下の通りエラーとなります。

エラーメッセージ MariaDB [shop_items]> INSERT INTO items(name,price,stock) VALUES ('メロン',500,20); ERROR 1366 (22007): Incorrect string value: '\x83\x81\x83\x8D\x83\x93' for column `shop_items`.`items`.`name` at row 1 MariaDB [shop_items]>

試したこと

chcp 65001
上記により、コードページを「utf-8」にすると、既存の日本語部分は正しく表示されるものの、新たに入力した日本語は、文字化けします(入力エラーにはなりません)。

MariaDB [shop_items]> insert into items(name,price,stock) values ('メロン',300,10);
Query OK, 1 row affected (0.011 sec)

MariaDB [shop_items]> select * from items;
+----+-----------+-------+-------+
| no | name | price | stock |
+----+-----------+-------+-------+
| 1 | orange | 150 | 30 |
| 2 | レモン | 100 | 15 |
| 3 | PPP | 300 | 10 |
+----+-----------+-------+-------+

この設定も一時的なもので、改めてMySQLを立ち上げると、文字のコードページは「932」に戻ってしまいます。

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

MySQL Server 5.7

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

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

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

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

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

guest

回答2

0

windows環境であればコマンドプロンプトでやっても良いことは一つもないので
基本的には使用しないほうがいいでしょう。せめてPowerShellで。
RDBはCUI利用はおまけのようなものですから、XAMPPですし
phpMyAdminなどGUIツールを利用して下さい

投稿2021/06/29 05:38

yambejp

総合スコア116736

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

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

hattositegoo

2021/06/29 09:06

yambejpさま そうなんですね。どっちみちxamppを起動するわけですから、phpMyAdminを使ったほうが手っ取り早いですね。早々にご助言いただきましてありがとうございました。 その後、SET character_set_client、〃connection、〃resultsを「cp932」とすることで、一時的に解決しましたが、再度MySQLを立ち上げ直すと元の状態に戻ってしまいました。難しいものですね。。。これからは、phpMyAdminを使っていきます。
yambejp

2021/06/29 09:08

mysqlクライアントでログインして処理するのはおすすめできないですが mysqlクライアントにテキストをリダイレクトすると結果を得られるかもしれません ただしそれもセキュリティ上の課題が残ります
guest

0

自己解決

SET character_set_client = cp932
SET character_set_connection = cp932
SET character_set_results = cp932
とすることで、一時的に設定を変えることに成功しましたが、立ち上げ直すと、また元の設定に戻ってしまいました。

投稿2021/06/29 09:06

hattositegoo

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問