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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

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

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1043閲覧

C#からMySQLに接続する際にエラーが発生する

daityan

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

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

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2023/12/18 03:12

実現したいこと

  • C#からMySQLに接続するときにエラーが発生するため解決したい(MySQLコネクタを使用)

前提

●使用しているコネクタやMySQLのバージョン
・MySQL       : MySQL Server 8.0
・MySQL Connector :MySQL Connector Net 6.9.11

発生している問題・エラーメッセージ

con.Open();を実行するとエラーが発生してしまいます。
エラーの内容は下記になります。

'con.IsPasswordExpired'は、型'System.NullReferenceException'の例外をスローしました。 'con.ServerThread'は、型'System.NullReferenceException'の例外をスローしました。 'con.ServerVersion'は、型'System.NullReferenceException'の例外をスローしました。

該当のソースコード

都合によりソースを添付することができないため、参考にしたソースを添付させていただきます。
基本的な流れや書き方は同じになります。

class DbConnect { //get values of name and customerid using the bracelet id ( a equijoin using customer, ticketpurchase and ticket) //every ticket is assigned a bracelet id - and i have 6 bracelets to add so also 6 dummy profiles in database //method to look for customerid using bracelet id and return only one string public int CustomerId(string braceletId) { String str = @"server=localhost;database=dbi340001;userid=xxxxxxxxxxx;password=xxxxxxxxxxxxxxx;"; MySqlConnection con = new MySqlConnection(str); try { con.Open(); //open the connection MessageBox.Show("welcome"); return 1; } catch (MySqlException err) //We will capture and display any MySql errors that will occur { Console.WriteLine("Error: " + err.ToString()); } finally { if (con != null) { con.Close(); //safely close the connection } } //remember to safely close the connection after accessing the database return 0;

試したこと

●接続文字列が正しいことの確認
→接続文字列は正しいことを確認済みです(ユーザ名、パスワード、データベース名)
●ネットで解決方法がないか調べる
→参考にできる情報を見つけることはできませんでした(英語のサイトには少し関連しそうな情報はあったのですが、具体的にどのようにして解決したのかの記載がないように思います)

補足情報(FW/ツールのバージョンなど)

ご意見いただけますと幸いです。
何卒宜しくお願い致します。

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

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

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

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

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

nururi

2023/12/18 07:13 編集

過去にもいくつかMySQL関連の質問をされていますが、既に解決済みであれば解決方法を自己回答してクローズしてください。また、使用しているランタイムのバージョン(.NET Framework 4.8、.NET 8等)を記載してください。 IsPasswordExpired、ServerThread、ServerVersionは、そもそも接続に成功してからじゃないと設定されないので、エラーの原因とは関係が無いと思われます。try-catchで例外処理を行って、例外が発生しているならcatchしたExceptionオブジェクトをToStringすればエラー詳細が判る筈なので、それも載せてください。認証失敗であれば、別のDB接続ツールで接続出来るかどうか等も確認してください。
daityan

2023/12/18 07:29

nururiさん お世話になっております。 コメントいただき誠にありがとうございます。 > 例外が発生しているならcatchしたExceptionオブジェクトをToStringすればエラー詳細が判る筈なので、それも載せてください 恥ずかしながら上記の認識がありませんでした。大変勉強になります。今後は上記のように対応いたします。ありがとうございます。 本件解決いたしましたのでお知らせいたします。 使用している「MySQLコネクタのバージョン」が「MySQLDBのバージョン」に対応していなかったことが原因でした。 下記のように、MySQLのバージョンを下げることで接続が成功するようになりました。 ■解決前 ・MySQL       : MySQL Server 8.0 ・MySQL Connector :MySQL Connector Net 6.9.11 ■解決後 ・MySQL       : MySQL Server 5.5 ・MySQL Connector :MySQL Connector Net 6.9.11   MySQL Connector Net 6.9.11の場合は、MySQLの5,5、または5.6、または5.7のみ対応しているようです。 ご意見いただき大変ありがとうございました。
guest

回答1

0

自己解決

使用している「MySQLコネクタのバージョン」が「MySQLDBのバージョン」に対応していなかったことが原因でした。
MySQLのバージョンを下げることで接続が成功するようになりました。

下記の記事が対応表を記載してくださっているので参考になるかと思います。
https://zenn.dev/haretokidoki/articles/a29a84f3048cfb

投稿2023/12/18 07:31

daityan

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問