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

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

新規登録して質問してみよう
ただいま回答率
85.53%
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回答

1738閲覧

MySQLで日本語を使う際に生じるエラーの原因を知りたいです。

origa3

総合スコア22

MySQL

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

SQL

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

0グッド

0クリップ

投稿2023/01/02 01:32

編集2023/02/11 14:40

前提

MySQL実行ツールの利用にあたって、日本語入力時に「Incorrect string value」エラーになりました。

実現したいこと

エラーになる原因を知りたいです。

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

Schema Error: Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xE6\x96\xB0\xE5\xB9\xB4' for column 'name' at row 1

該当のソースコード

MySQL実行ツールとして以下2つを利用しています。
【SQL Fiddle】http://sqlfiddle.com/
【DB Fiddle】https://www.db-fiddle.com/

いずれにも以下SQLを実行すると【DB Fiddle】の方は冒頭のエラーとなります。
【SQL Fiddle】http://sqlfiddle.com/#!9/8ec464
【DB Fiddle】https://www.db-fiddle.com/f/ae1H6YrPVCYvmUeets46it/0

SQL

1CREATE TABLE test1 (`name` VARCHAR(10) ); 2INSERT INTO test1 (`name`) VALUES('新年');

試したこと

日本語を使わないこと、バージョン確認、文字コード確認を試みました。

まずSQLを以下にすると【DB Fiddle】でエラーはなく、日本語に原因があるとわかります。

SQL

1CREATE TABLE test1 (`name` VARCHAR(10) ); 2INSERT INTO test1 (`name`) VALUES('new year'); # 日本を使わなければエラーなし

次にバージョンをSELECT VERSION();で確認すると
【SQL Fiddle】5.6.48 
【DB Fiddle】5.7.38
でしたが、5.7.38で日本語がエラーになるという情報は見つけられませんでした。

最後にエラーを検索しこちらの記事を拝読致しましたら、DBの文字コードに原因があるようで、
【MySQL】INSERT INTOで「Incorrect string value」エラーが表示された時の解決方法

いわく、次の4つの項目が「utf8mb4」でないときに起こるエラーとのこと。
character_set_client
character_set_connection
character_set_results
character_set_server

そこで文字コードを確認するためにSHOW VARIABLES LIKE 'chara%';を実行しましたが、
なぜか、エラーのない【SQL Fiddle】の方で4つの項目が「utf8mb4」になっていません。
そして、エラーのある【DB Fiddle】の方では「character_set_server」の項目だけ「latin1」でした。

以上のように私の知識と調査ではエラーの原因がいまいち把握できないでおります。
どうして【DB Fiddle】ではエラーとなるのか、原因が推測できる方がいらっしゃいましたら宜しくお願い致します。

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

バージョンは記載した通りで、補足情報は現状特にございません。

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

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

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

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

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

melian

2023/01/02 01:57

CREATE TABLE で CHARSET を指定してみて下さい。 CREATE TABLE test1 (`name` VARCHAR(10) ) CHARSET=utf8;
origa3

2023/01/02 02:04

ありがとうございます。おっしゃる通りでエラーはなくなりました。 質問に記載した記事では4つの項目がありますが、日本語のエラーを起こす原因としてこの4つは不適当だったということでしょうか?
melian

2023/01/02 02:29

SQL Fiddle の方で、 SHOW SESSION VARIABLES LIKE 'chara%'; を実行するとどうなりますでしょうか? こちらでは以下の様な結果になります。 http://sqlfiddle.com/#!9/8ec464/4
origa3

2023/01/02 04:46

そうなんです。エラーのない【SQL Fiddle】の方で4つの項目はどれも「utf8mb4」になっていないのです。 しかしエラーのある【DB Fiddle】の方では3つだけは「utf8mb4」になっているのです。 なのでこれらの項目はエラーには関係ないのか…というのが気になります。
yuma.inaura

2023/01/02 12:42

その記事だけを頼りのするのではなく各項目についてもう少し調べてみると良いかもしれません
退会済みユーザー

退会済みユーザー

2023/02/11 05:40

MariaDB の char-set がデフォルトで utf8mb3 で、それを C# アプリで ADO.NET + Oracle 製プロバイダ (Connector/NET) を利用して使おうとしたら、その Connector/NET が utf8mb3 をサポートしてなかったという話があったんですが、それと似たようなことはないでしょうか? (ツールが utf8mb3 をサポートしてないとか)
guest

回答1

0

DB Fiddle では character_set_database latin1
SQL Fiddle では character_set_database utf8

ですね。

これじゃないでしょうか。

ブラウザ上から使えるDB Playgroundの「DB Fiddle」が便利
日本語を扱う場合の注意
MySQL 5.7では日本語に対応していない latin1 がdefault charsetなので、そのまま日本語を扱おうとすると死ぬ。

https://blog.pinkumohikan.com/entry/online-db-playground-service-dbfiddle

投稿2023/01/02 01:53

編集2023/01/02 01:55
yuma.inaura

総合スコア1451

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

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

origa3

2023/01/02 01:58

あ、はい。その点はすでに質問で記載した通りなのですが、他の項目が「utf8mb4」ではないのにエラーにならないのが不思議です。
origa3

2023/01/02 02:00

編とリンク掲載ありがとうございます。 つまり、character_set_database が原因で、他の項目は関係ないのだと仰りたいのでしょうか?質問のリンクには項目が4つ挙がっているので疑問だったのですけれど…
origa3

2023/01/02 02:01

申し訳ございません。上記誤字でした。 (誤り)編とリンク掲載 (訂正)編集とリンク掲載
yuma.inaura

2023/01/02 02:13

参考記事でも結局character_set_databaseもutf8に変わってるみたいですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問