WebSurfer's Home

Filter by APML

MariaDB 10.11 をインストールしました

by WebSurfer 10. December 2024 13:33

MariaDB 10.11.10 を自分の PC (Windows 10 バージョン 22H2) にインストールしましたので、その手順などを備忘録として書いておきます。

2024 年 12 月に自分が使っているホスティングサービスで新サーバーへの移行がありました。新サーバーでは MariaDB 10.11 が使用されており、それに自分がブログアプリで使っているプロバイダ MySql.Data 6.3.6 でアクセスするとサーバーエラーになるという問題が生じました。

(MariaDB とMySql.Data との相性の話は MySQL Connector fails to connect to MariaDB 10.10.2 とか MySqlConnection.Open() System.InvalidCastException: Object cannot be cast from DBNull to other types に情報がありますので興味があれば見てください)

そういう訳で、自分の開発環境での検証用に、ホスティングサービスが使っている MariaDB 10.11 と同じバージョンのものを MariaDB Server: the innovative open source database から入手して自分の PC にインストールしました。(ちなみに、記事を書いた時点での最新版は 11.6.2 です)

まず、MariaDB のダウンロードページ Download MariaDB Server に行き、ドロップダウンリストでバージョンを選び[Download]ボタンをクリックします。

ドロップダウンリストで MariaDB Server 10.11.10 を選んだ場合 mariadb-10.11.10-winx64.msi という msi 形式のインストーラーがダウンロードされますので、それを起動してインストールします。

以下にインストールするときに表示された画像を貼って要点を書いておきます。

(1) 初期画面

初期画面

ダウンロードした mariadb-10.11.10-winx64.msi を起動すると上の画面が表示されます。[Next] ボタンをクリックします。

(2) Und-User License Agreement 画面

Und-User License Agreement

ライセンス条項が表示されるので、アクセプトして ([I accept the terms in the License Agreement] にチェックを入れて)、 [Next] ボタンをクリックします。

(3) Custom Setup 画面

Custom Setup

カスタム設定のための画面が表示されます。自分の環境ではデフォルトのままで問題ないので、何も変更せず [Next] ボタンをクリックしました。

(4) Deafult instance properties 画面 (1/2)

Deafult instance properties (1/2)

データベースに root ユーザーで接続する際のパスワードなどの設定画面が表示されます。今後の接続の際に使用するパスワードを決めて入力します。パスワードはおぼえておいてください。

[Use UTF8 as default server's character set] にチェックを入れます。[Data directory] はデフォルト C:\Program Files\MariaDB 10.11\data\ のままにしました。

ローカルでの検証用に使うだけなら [Enable access from remote machines for 'root' user] は不要ですが、将来そういう必要も出てくるかもしれないと思ってチェックを入れておきました。

以上の設定を入力して [Next] ボタンをクリックします。

(5) Default instance properties 画面 (2/2)

Deafult instance properties (2/2)

デフォルトの設定のまま [Next] をクリック・・・したのですが、"The TCP Port you selected is already in use. Please choose a differnt port." というエラーメッセージが出て先に進みません。

記録に残っていないですが、先に MySQL 8.0.19 をインストールした際、ポート 3306 を使用したようです。(ちなみに、ノート PC の MySQL 5.7.17 が 3306、PostgreSQL は 5432 というのは記録に残っていました)

という訳で、[TCP port] のみ 3307 に変更しました。その他は上の画面の通りのデフォルトのまま [Next] ボタンをクリックします。

(6) Ready to install MariaDB 10.11 (x64) 画面

Ready to install MariaDB 10.11 (x64)

[Install] ボタンをクリックします。ボタンには盾マークが表示されていますが、インストールの際に権限の昇格が必要という意味です。インストールが進まない場合はユーザーアカウント制御画面が表示されているはずなので [はい] をクリックしてください。

[はい] をクリックすると Installing MariaDB 10.11 (x64) 画面が表示され、インストールが開始されるはずです。

(7) Completed the MariaDB 10.11 (x64) Setup Wizard 画面

Completed the MariaDB 10.11 (x64) Setup Wizard

インストールが完了すると上の画面が表示されます。[Finish] ボタンをクリックして終了します。

(8) スタートメニュー

スタートメニュー

インストールの結果、Windows のスタートメニューには上の画像の項目が表示されます。

一番下の MySQL Client (MariaDB 10.11 (x64)) が MySQL の Command Line Client と同様なものらしいです。


メニューに含まれる HeidiSQL というのは、SQL Server Management Tool と同様に GUI で MariaDB の操作ができるツールのようです。詳しくは What is HeidiSQL? を見てください。

インストールした MariaDB に接続して使えるようにする方法を下に書いておきます。

(a) HeidiSQL 初期画面

HeidiSQL 初期画面

起動すると上の初期画面が表示されます。[新規] ボタンをクリックします。

(b) HeidiSQL 初期設定

HeidiSQL 初期設定

上の画面で名前を「ローカルMariaDB」とし (任意に覚えておきやすい名前を設定)、ポートを 3307 に変更 (ポートは MariaDB のインストール時に設定したもの)、パスワードに MariaDB のインストール時に設定したものを入力して [開く] ボタンをクリックします。

(c) HeidiSQL 画面

HeidiSQL 画面

上の画面が表示されます。「ローカルMariaDB」下に表示されている項目は、上の手順で MariaDB 10.11.10 をインストールした際に同時にインストールされたデータベースです。

自分は HeidiSQL を使って、データベース blogengine を作成し、[ファイル] ⇒ [SQL ファイルを実行] でホスティングサービスからエクスポートした SQL を走らせてブログの記事のデーターベースを複製しました。


上の手順でインストールした MariaDB 10.11.10 に MySql.Data を使って接続を試みるとどうなるかを検証してみました。

ちなみに、接続文字列は MySQL と同じものに port=3307 を追加すれば OK でした。以下の様にします。

server=localhost;user id=root;password=********;database=mysql;port=3307

MySql.Data 8.1 以降であれば、問題なく MariaDB 10.11.10 に接続でき、データを取得できました。

MySql.Data 8.0.11 では MySql.Data.MySqlClient.MySqlException "The host localhost does not support SSL connections." という例外がスローされます。

MySql.Data 6.x では System.InvalidCastException "オブジェクトを DBNull から他のタイプにキャストすることはできません。" という例外がスローされます。

・・・ということで、既存のブログアプリで使っている MySql.Data 6.3.6 がダメということでした。MySql.Data 8.1.0 は既存のブログアプリのフレームワーク .NET Framework 3.5 には対応してないので MySql.Data.dll を入れ替えれば済むという問題ではないことが分かりました。

Tags: ,

MySQL

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

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。ブログ2はそれ以外の日々の出来事などのトピックスになっています。

Calendar

<<  February 2025  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
242526272812
3456789

View posts in large calendar