先の記事「MySQL をインストールしました(その 2)」で書きましたが、MySQL Installer 5.7.17 を使って、MySQL Community Server 5.7.17, Connector/Net 6.9.9 など、その時点での最新版の MySQL 関係のコンポーネントを一式インストールしました。(何をインストールしたかは記事を見てください)
その後 1 年も経っているのに何ですが、MySQL では Visual Studio の TableAdapter 構成ウィザードを使って型付 DataSet + TableAdapter を自動生成できないことに最近やっと気が付きました。(汗)
備忘録として、自分の環境で起こった問題と解決策を書いておきます。ちなみに、自分の環境とは以下の通りです。(MySQL 関係はすべて MySQL Installer 5.7.17 でインストールしたものです)
-
Windows 10 Pro 64-bit
-
Visual Studio 2010 Pro / 2015 Community Update 3
-
MySQL Community Server 5.7.17
-
MySQL for Visual Studio 1.2.6
-
Connector/Net 6.9.9
上記の環境で TableAdapter 構成ウィザードを使って型付 DataSet + TableAdapter を生成すると、最後のステップで "[A] MySql.Data.MySqlClient.MySqlConnection は [B] MySql.Data.MySqlClient.MySqlConnection にキャストできません。" というエラーになります。
以下の画像を見てください。
Visual Studio 2010
Visual Studio 2015
エラーメッセージを見ての想像ですが、Visual Studio のウィザードが使う MySql.Data.dll のバージョン 6.9.8 と、GAC の MySql.Data.dll のバージョン 6.9.9 に不一致があって、それが原因でウィザードが期待通り動かないようです。
自分の PC のフォルダの MySql.Data.dll のバージョンを調べてみると、確かにエラーメッセージの通りのバージョンの相違がありました。
TableAdapter 構成ウィザード以外での不具合としては、ASP.NET Web Forms アプリで使用される SqlDataSource の例があります。
ウィザードの最後のステップで[クエリのテスト]を行うと、"オブジェクト参照がオブジェクト インスタンスに設定されていません。" というエラーになります。
以下の画像を見てください。
Visual Studio のサーバーエクスプローラーから MySQL に接続するのは問題ないのですが、どうもウィザードが MySQL に接続に行くとダメな感じです。
ググって調べると、同様な問題が MSDN フォーラムの記事 や MySQL のフォーラムの記事 に報告されているのが見つかりました。
いずれの記事にも Connector/NET 6.9.9 をアンインストールしてから Connector/NET 6.9.8 をインストールして解決したと書いてあります。
Connector/NET のアンイストールはいろいろトラブルがある様子で、クリーンにアンインストールできるかどうか不安がありましたが、ウィザードが使えないと不便なので自分もやってみることにしました。
まず Connector/NET 6.9.9 のアンインストールですが、「コントロールパネル」⇒「プログラムと機能」を使って行うのではなく、MySQL Installer の Remove 機能を使うのがよさそうです。
上の画像で[Execute]ボタンをクリックするとエラーなく Remove は完了し、GAC, レジストリ, Program Files フォルダ, machine.config にも削除結果が反映されており、クリーンにアンインストールできました。トラブルがあるのではという心配は杞憂だったようです。
Connector/NET 6.9.8 のインストールも MySQL Installer を使ってできないかトライしたのですが、"No valid download found for product Connector/NET 6.9.8" が解消できず断念。
やむを得ないので別途ダウンロードした Connector/NET 6.9.8 の msi を起動してインストールしました。MySQL Installer に認識されなくて後で管理がやりにくいかもしれないと思いましたが、そんなことはなかったです。
その後、Visual Studio 2015 で TableAdapter 構成ウィザードを使って型付 DataSet + TableAdapter を作ってみましたが、上に述べた問題は解消されていました。
ASP.NET Web Forms アプリ用の SqlDataSource も試してみましたが、ウィザードから MySQL に接続できないという問題も解消されていました。