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

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

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

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

3回答

9287閲覧

【MariaDB】日本語をinsertしようとしたらエラーが発生

tomo_mon

総合スコア14

MySQL

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

1クリップ

投稿2018/04/25 07:14

編集2018/04/25 07:31

いつもお世話になっております。

[環境]
OS:Windows10
DB:MariaDB10.2

[現象]
コマンドプロンプトから日本語をinsertしようとしたらエラーが発生します。
※半角英数字はinsertできます。
※HeidiSQLというツールからは日本語はinsertできます。

[処理]
MariaDB [db1]> insert into EncTEST002 (strName) values('坂本龍馬');
ERROR 1366 (22007): Incorrect string value: '\x8D\xE2\x96{\x97\xB4...' for column 'strName' at row 1

[テーブル]
CREATE TABLE EncTEST002 (
ID varchar(50) DEFAULT NULL,
strName varchar(50) DEFAULT NULL,
strName_Enc varbinary(1000) DEFAULT NULL,
strMail varchar(50) DEFAULT NULL,
strMail_Enc varbinary(1000) DEFAULT NULL,
RegDate datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |

[文字コードの設定]
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MariaDB 10.2\share\charsets\ |
+--------------------------+-----------------------------------------------+

サーバーとクライアントで同じ文字コード「utf8mb4」を設定しています。

もし対処方法ご存じの方がいらっしゃいましたらご教示お願い致します。

イメージ説明

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

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

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

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

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

guest

回答3

0

ベストアンサー

エラーメッセージにあるバイナリデータはSJISの文字コードです。
コマンドプロンプトの文字コードを変更すれば良いんじゃないかと思うのですが、試してはいません。

文字コードの設定(CHCP)

※当然「utf8mb4」は無いので、せいぜいutf8の範囲内の文字しか使えないですけど。

投稿2018/04/25 08:34

編集2018/04/25 08:43
sazi

総合スコア25173

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

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

tomo_mon

2018/05/01 07:21

ご返信ありがとうございます。 おかげさまで原因が分かりました。 コマンドプロンプトも文字コード設定がある事を初めて知りました(^^;
guest

0

つmysql -u <user name> -p <database name> --default-character-set=cp932

投稿2018/04/25 11:18

hichon

総合スコア5737

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

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

tomo_mon

2018/05/01 07:23

ご返信ありがとうございます。 こちらも今後参考にさせて頂きます。
guest

0

テーブルの方のデータ型はどのようになっていますでしょうか。SHOW CREATE TABLEで確認してみてください。

MariaDBの場合、データベースの列ごとに文字コード設定が可能です。

投稿2018/04/25 07:28

maisumakun

総合スコア145183

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

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

tomo_mon

2018/04/25 07:32

ご返信ありがとうございます。 テーブルは以下の通りです。 CREATE TABLE `EncTEST002` ( `ID` varchar(50) DEFAULT NULL, `strName` varchar(50) DEFAULT NULL, `strName_Enc` varbinary(1000) DEFAULT NULL, `strMail` varchar(50) DEFAULT NULL, `strMail_Enc` varbinary(1000) DEFAULT NULL, `RegDate` datetime DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 列毎に文字コードは設定していません。 宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問