前提・実現したいこと
開発ソフトにVisualStudio2015を利用し
開発言語にC#、データベースにMySQLを使い
Windowsネイティブアプリを作りたい。
発生している問題・エラーメッセージ
MySQL Server本体や関連プログラム/コネクターはインストール済み
MySQL管理ソフトであるMySQL WorkbenchからMySQL Serverにアクセス可能です。
またVisualStudioのサーバーエクスプローラーからもMySQLにアクセス可能な状態です。
しかし、MySQL WorkbenchやVisualStudioのサーバーエクスプローラーでは接続できているのに
公式のリファレンスを参考にしてC#コード上からMySQLに接続してみたところエラーになってしまいます。
具体的にはビルドすると以下のようなエラーメッセージが出てしまいます。
TypeInitializationExceptionはハンドルされませんでした 型 'System.TypeInitializationException' のハンドルされていない例外が System.Transactions.dll で発生しました 追加情報:'System.Transactions.Diagnostics.DiagnosticTrace' のタイプ初期化子が例外をスローしました。
該当のソースコード
C#
1using System; 2using MySql.Data.MySqlClient; 3 4class Test { 5 void ConnectToMySQL() { 6 // ホスト名:localhost 7 // ポート番号:3306 8 // データベース名:sys 9 // ユーザ名:root 10 // パスワード:aiueo 11 12 // 接続文字列 13 string myConnString = "database=sys;server=localhost;user id=root;persistsecurityinfo=True;password=aiueo"; 14 15 // MySQLに接続 16 MySqlConnection myConnection = new MySqlConnection(myConnString); 17 myConnection.Open(); 18 } 19}
試したこと
■接続文字列の見直し
C#のコード上の接続文字列が間違っているのかと思い
接続が成功しているVisualStudioのサーバーエクスプローラーの文字列を確認したところ以下のようになっていました。
パスワードの項目がないのに接続できているのはよくわかりません。
database=sys;server=localhost;user id=root;persistsecurityinfo=True; ```そこでVisualStudioのサーバーエクスプローラーの文字列を、C#のコードにコピペして 後ろにパスワードを付け足して実行してみましたが同じエラーが出ました。 色々と順番を変えたりしてみましたが改善はしなかったです。 ```ここに言語を入力 database=sys;server=localhost;user id=root;persistsecurityinfo=True;password=aiueo;
persistsecurityinfo=trueをpersistsecurityinfo=falseにもしてみましたが駄目でした
database=sys;server=localhost;user id=root;persistsecurityinfo=false;password=aiueo; ```VisualStudioのサーバーエクスプローラーの文字列にはパスワードの項目がなかったので パスワードを削除してやってみましたが駄目でした。 ```ここに言語を入力 database=sys;server=localhost;user id=root;persistsecurityinfo=false;
■セキリティソフトの設定
次にセキュリティソフトがポート3306への接続をブロックしているのか思い
セキリティソフトのCOMODO Internet Securityを終了させて
windows10標準のwindows defender ファイアーウォールの設定を見直してみましたが
きちんとポート3306への接続が許可されていましたので、セキリティソフトの問題ではないと思いました。
■他のDBソフト(PostgreSQL)を試してみる
PostgreSQLでも、データベースに接続するシンプルなコードを書いて試してみましたが
データベースへ接続するメソッドを実行する行でエラーになってしまいました。
エラーメッセージはMySQLの時と同じです。
TypeInitializationExceptionはハンドルされませんでした 型 'System.TypeInitializationException' のハンドルされていない例外が System.Transactions.dll で発生しました 追加情報:'System.Transactions.Diagnostics.DiagnosticTrace' のタイプ初期化子が例外をスローしました。
他にエラーを引き起こしている要素があるか?
他に何かエラーの原因になっている要素はありますでしょうか?
どうすればC#のコードからMySQL Serverに接続できるのでしょうか?正直途方に暮れてます。
足りない情報等がありましたら、追記させていただきます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 02:11
退会済みユーザー
2020/05/25 02:14