WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

MySQL 8.0 Command Line Client ツール

by WebSurfer 5. October 2023 16:52

MySQL 8.0 のツールに Command Line Client と Command Line Client - Unicode がありますが、何が違うのかを調べてみました。調べたことを備忘録として書いておきます。

Command Line Client

ダウンロードサイト MySQL Community Downloads から MySQL 8.0 のインストーラーを入手し Windows PC にインストールすると、上の画像の赤枠で示すように MySQL 8.0 Command Line Client と MySQL 8.0 Command Line Client - Unicode という 2 つのツールが利用できるようになります。

何がどう違うのか調べていたら、MySQL のドキュメント「4.5.1.6 mysql Client Tips」の「Unicode Support on Windows」というセクションに説明が見つかりました。以下に記事の抜粋を載せておきます。

"Windows provides APIs based on UTF-16LE for reading from and writing to the console; the mysql client for Windows is able to use these APIs. The Windows installer creates an item in the MySQL menu named MySQL command line client - Unicode. This item invokes the mysql client with properties set to communicate through the console to the MySQL server using Unicode."

mysql client は Windows がコンソールを読み書きする UTF-16LE ベースの API を使うことができる。MySQL 8.0 Command Line Client - Unicode を起動することにより、mysql clien はコンソールを通じて MySQL server と Unicode を使って通信を行うようになる・・・ということらしいです。

具体的にどういうことになっているか、自分の環境(Windows 10 PC に MySQL 8.0.19 を Setup Type を Full に設定してインストール)で調べたことを以下に書きます。

まず、使われている charset (文字セット) をそれぞれの場合について調べました。結果は以下の画像の通りです。character-set-client, -connection, -results が異なるところに注目してください。character-set-database, -server は MySQL 8.0 のデフォルト utf8mb4 で両方同じとなっています。

Command Line Client

charset, Command Line Client

Command Line Client - Unicode

charset, Command Line Client - Unicode

character-set-client, -connection, -results の意味は MySQL のドキュメント「接続文字セットおよび照合順序」によると以下の通りです。

  • character_set_client: クライアントが送信するステートメントの文字セット
  • character_set_connection: サーバーがステートメントを受信したあと、変換する文字セット
  • character_set_results: サーバーがクライアントにクエリー結果を返信するときに使用する文字セット

上の画像の Command Line Client では character-set-client, -connection, -results が cp932 となっています。cp932 というのは Shift_JIS を Microsoft と OEM ベンダーが独自拡張した文字コードで、拡張部分を除けばほぼ Shift_JIS と思えばよさそうです。ということは Command Line Client で起動したコンソールからは Shift_JIS しか使えないということになるはずです。

例えば以下のようなテーブルが MySQL にあるとします。データベース、テーブルの charset は uft8mb4 です。このテーブルにツールで起動したコンソールからクエリを投げて試してみます。

MySQL のテーブル

ちなみに、上の画像の最後の行の Title 列の各文字は以下の通りです。

  • あ : Shift_JIS の文字
  • 丂 : Shift_JIS に無し、Unicode の BMP には含まれる
  • 𠀋 : サロゲートペア
  • 🍎 : サロゲートペア
  • 👨‍🌾 : サロゲートペア 👨 と 🌾 を ZeroWidthJoiner で連結

Command Line Client の場合は以下のようになります。Shift_JIS 以外は認識してくれないようです。

Command Line Client

Command Line Client - Unicode の場合は以下のようになります。𠀋 🍎 👨‍🌾 も where Title like '%〇%' の 〇 としては有効でした。

Command Line Client - Unicode

Tags: , ,

MySQL

TableAdapter 構成ウィザードで不具合(その 2)

by WebSurfer 21. April 2020 10:40

最新版の MySQL 8.0.19 をインストールしましたが(下の画像参照)、2 年前にインストールした MySQL 5.7.17 と同様に、依然として MySql.Data.dll のバージョン不一致が原因で Visual Studio の TableAdapter 構成ウィザードに不具合が出るという問題がありましたので備忘録として書いておきます。

MySQL 8.0.19

MySQL 5.7.17 時の問題とその解決方法は先の記事「MySQL での TableAdapter 構成ウィザード不具合」で書きました。それと同じ MySQL for Visual Studio と Connector/NET の MySql.Data のバージョン不一致による問題です。

ただし、何故か Visual Studio Community 2019 v16.5.4 では問題なく、Visual Studio Community 2015 Update 3 だけで問題が出ました。(注:VS2017 は自分は持っていないので不明です。VS2010 は MySQL 8.0.19 のサポート対象外のようなので試してません)

下の画像は VS2015 で TableAdapter 構成ウィザードを使って型付 DataSet / DataTable + TableAdapter を作成しようとしたとき時、最後のステップで表示されたエラーメッセージです。

TableAdapter 構成ウィザード

上のエラーメッセージは、VS2015 のウィザードが使う MySql.Data.dll のバージョン 8.0.18 と、GAC の MySql.Data.dll のバージョン 8.0.19 に不一致があって、それが原因でキャストに失敗したと言っています。ちなみに、前者は MySQL for Visual Studio、後者は Connector/NET によりインストールされたものです。

この問題は、先の MySQL 5.7.17 時と同様に、MySQL Installer(この記事の一番上の画像のもの)を操作して、Connector/NET のバージョンを 8.0.19 から 8.0.18 に下げることで解決できます。

しかしながら、VS2015 での問題を解決するために Connector/NET のバージョンを 8.0.19 から 8.0.18 に下げると、今度は VS2019 から MySQL に接続できなくなるという問題が出ます。

Connector/NET のバージョンを 8.0.18 に下げた後、VS2019 から MySQL の接続を作成する際、以下の画像のように「データソースの選択」ダイアログで[MySQL Database]を選択すると、

データソースの選択

下の画像のように、MySQL for Visual Studio が "An error occurred that is normally caused by not having for Visual Studio properly installed." というエラーメッセージを表示します。

MySQL for Visual Studio のエラーメッセージ

このエラーを無視して先に進めると、下の画像のように VS2019 が MySql.Data.dll 8.0.19.0 が見つからないというエラーメッセージを表示して MySQL への接続に失敗します。

VS2019 のエラーメッセージ

この問題を解決する方法は、Connector/NET のバージョンを 8.0.19 に戻すことです。ただし、そうすると、再び、VS2015 で TableAdapter 構成ウィザードを利用する際に MySql.Data.dll のバージョン不一致の問題が出ますが。

何故 VS2015 と VS2019 ではこのような違いが出るのかは不明です。MySQL 8.0.19 インストーラーのデフォルト設定で VS2015 / VS2019 の Common7\IDE\PrivateAssemblies フォルダにある MySql.Data.dll のバージョンは 8.0.18 で、GAC にある MySql.Data.dll のバージョンは 8.0.19 と異なるのですが・・・

というわけで、VS2019 から MySQL に接続したり TableAdapter 構成ウィザードを利用するためには Connector/NET のバージョンは 8.0.19(デフォルト)のままとしておき、VS2015 での TableAdapter 構成ウィザードの利用は諦めざるを得ないようです。(注:VS2017 は自分は持ってないので不明です)

Tags: ,

MySQL

MySQL をインストールしました(その 3)

by WebSurfer 20. April 2020 10:16

先の記事「デスクトップ PC を買いました」の PC に MySQL 8.0.19 をインストールしました。8.0.19 はこの記事を書いた時点での最新版です。

MySQL 8.0.19

手順は「MySQL をインストールしました(その 2)」で書いた MySQL Community Server 5.7.17 のものとほぼ同じです。

前回 5.7.17 の時と同様に、今回も MySQL のダウンロードサイト MySQL Community Downloads からインストーラー mysql-installer-web-community-8.0.19.0.msi を入手し、上の画像の製品一式をインストールしました。

前回の手順と大きく異なる点のみ以下に備忘録として書いておきます。下の (7) とか (8) は先の記事「MySQL をインストールしました(その 2)」に書いたステップの番号です。

(7) タイプとネットワーク

ここまでは前回 5.7.17 の時とほぼ同じですが、この画面で[Next >]をクリックすると、前回は出なかった Authentication Method というダイアログが出ます。以下の画像を見てください。

Authentication Method

Use Legacy Authentication Method (Retain MySQL 5.x Compatibility) を選んで[Next >]をクリックします。

(9) MySQL サーバーへのアカウント登録

前回 5.7.17 の時は「(8) MySQL ユーザー詳細情報」がこのステップより先でしたが、今回はこちらが先になります。[MySQL Root Password]欄に任意のパスワードを入力し、[Add User] ボタンをクリックすると「(8) MySQL ユーザー詳細情報」のダイアログが出ます。設定したパスワードは忘れないように覚えておいてください。

(8) MySQL ユーザー詳細情報

この画面で User Name に root を設定すると既に使用されているというエラーになります。どうも root とは別のユーザーを設定するらしく、ここでは別の任意のユーザー名とパスワードを設定します。設定したユーザー名とパスワードは忘れないように覚えておいてください。

(ちなみに、前回の 5.7.17 の時はこの画面で User Name に root を設定、Password を入力して「(9) MySQL サーバーへのアカウント登録」に進むと、そこで[MySQL User Account]には (9) で設定したユーザー root が表示されました)

(13) 設定の完了

Apply Configuration

内容が前回と異なりますが気にせず続行します。

その後、MySQL Router Configuration というダイアログが出ますが、InnoDB cluster と関係あるものらしく、自分は利用しないのでチェックは入れずスキップして完了しました。


MySQL for Visual Studio の MySql.Data.dll 8.0.18 と Connector/NET の MySql.Data.dll 8.0.19 のバージョン不一致により Visual Studio の TableAdapter 構成ウィザードで不具合が出るという問題は依然としてあります。それについては別途記事を書く予定です。

Tags: ,

MySQL

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  June 2024  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

View posts in large calendar