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

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

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

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

2回答

958閲覧

MySQLでの正しい文字コード設定がわからない

GreenYossie

総合スコア7

MySQL

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2017/07/19 05:33

###前提・実現したいこと
MySQL Ver4 で動いていた古いシステムを復活させるため Windows Server
2008 R2 に MySQL Server 5.6 をインストールして環境を再構築しました。
システムの中核部分はVB.NETで組みなおしましたが、一部は VB6 の頃の古い
EXE がそのまま動いています。

最終的にはDBのレプリケーションをおこないたいのですが、試行した限り、
レプリケーションで処理されるSQL内の日本語全角文字の部分でエラーが出て
処理がとまってしまいます。そのためDBの文字コードの設定が根本的に問題が
あるのではと思っております。

システムとしては(日本語全角文字列の保存・読出など含め)問題なく(?)
運用できてしまっているので、なんとかシステム運用を維持しながら設定を
正しく直し、レプリケーションをおこなうところまで漕ぎ着けたいです。

根本的に理解ができていない状況でお恥ずかしい限りですが、どなたか
アドバイスいただけると助かります。

###発生している問題・エラーメッセージ
レプリケーションの設定をして、Slave側で show slave status にて状況を
確認したところ、エラー 1366 が出て進まない状況のようで、エラーは下記
のような内容です。
Error 'Incorrect string value: '\xCF\xC2\xD3...' for column 'FLD01NAME'
at row 1' on query.
Default database: 'hogedb'.
Query: 'UPDATE hogetbl SET FLD01NAME=0xCFC2D3...
WHERE ID = 0x3233333832313339'
本来は string value として全角文字(記号ではありません)が入るべき
ところが文字化けをしたためにエラーになっているのではと思っています
が正直自信がないです。

###該当のソースコード
Master側のサーバ上の MySQL Wotkbench にて
show variables like 'character_set%';
を実行したところ以下の表示となります。
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:\Program Files\MySQL\MySQL Server 5.6\share\charsets
また、各テーブルでも
ENGINE=InnoDB DEFAULT CHARSET=utf8
と設定しています。

そもそも、このあたりの設定が間違えているのではと考えています。

###試したこと
解決の糸口になるかわかりませんが、 Windows7 のクライアント端末から
ODBCで接続してACCESSでテーブルのデータを参照しようとする際、ODBC設定
の中の Character Set でいろいろと設定してみると以下のようになります。
空欄 : 接続でき、日本語全角文字が正しく表示される
sjis : エラーとなり接続できない
cp932 : 接続でき、日本語全角文字が正しく表示される
utf8 : 接続でき、日本語全角文字が文字化けする
実際に運用中のシステムのクライントはODBC接続をしており、クライアント
端末側では上記の「空欄」の設定となっています。

###補足情報(言語/FW/ツール等のバージョンなど)
Master側で出力された段階ですでに文字化けの状態になっているのだと
思いますので。
サーバOS : Windows Server 2008 R2
DB : MySQL Server 5.6
クライアントOS : Windows7
クライアントからの接続方法 : ODBC

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

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

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

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

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

guest

回答2

0

ベストアンサー

\xCF\xC2\xD3...の文字列がASCIIでxCF=半角カナ「マ」、xC2=半角カナ「ツ」、xD3=半角カナ「モ」に読めるのですが、半角カナが入っていないでしょうか?

投稿2017/08/05 18:06

zooiiooz

総合スコア176

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

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

GreenYossie

2017/08/09 08:19

回答ありがとうございます。 おっしゃるとおり、そのフィールドは名称の文字列を入れております。
zooiiooz

2017/08/09 09:59

旧システムの半角カナを全角カナに変換することは可能なのでしょうか?その後レプリケーションを行うとどうでしょう?文字コードの設定というよりも半角カナが問題な気がします。
GreenYossie

2017/09/12 00:15

回答ありがとうございます。対象データが10万件以上ですし、システムAPの関連する箇所を改修する手間も出るため、「試してみる」というのがつらい状況です。 この問題の解決は道のりが長そうですし、そもそもレプリケートを構築するにしても、業務システムを運用しながらふフェイルオーバーのテストなどが難しい状況になってきたので、ダンプなどを利用したバックアップ環境を整備しようと思います。 結果的に断念することにいたします。丁寧におつきあいいただきありがとうございました。
guest

0

windows serverはあまりよくわかりませんが、master側のmysqlの文字コード設定はutf8で統一されていますので、UTF-8の全角文字なら入るはずです。
設定としてはそれで合っていると思います。

masterの中に入っている全角文字の文字コードは何でしょう?
見る限りutf8でないことはわかりますが・・・。

mysqlクライアントの文字コード設定とかが違っているとかではないですか?

投稿2017/07/20 06:36

Iya712

総合スコア158

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

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

GreenYossie

2017/07/20 07:51

回答ありがとうございます。困り果てている状態なので助かります。 DBへの入出力は基本ODBC経由でされています。「試したこと」記載のとおり、ODBCの設定の中でCharcterSetは 空欄 になっています。疑問ばかりで申し訳ありませんが、ODBCにおいて 空欄=cp932 という意味になったりしますか?(何かで確認できるようであれば確認したいです。) もしそういう事であれば、DBに蓄積されたデータの全角文字の文字コードは結果としてcp932に統一されているということになるでしょうか?
GreenYossie

2017/09/12 00:16

この問題の解決は道のりが長そうですし、そもそもレプリケートを構築するにしても、業務システムを運用しながらふフェイルオーバーのテストなどが難しい状況になってきたので、ダンプなどを利用したバックアップ環境を整備しようと思います。 結果的に断念することにいたします。おつきあいいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問