LoginSignup
zooey3
@zooey3 (衛 中野)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

.NET6 MySqlConnectorでBeginTransactionできない

解決したいこと

.NET6 でMySqlConnectorのBeginTransactionを呼ぶとフリーズします。
解決方法を教えて下さい。

環境

VisualStudio2022, Windowsフォームアプリ(WinExe), TargetFramework:.NET6(net6.0-windows)
RDS:MySQL5.7
ドライバ:MySqlConnector(2.3.7)

発生している問題・エラー

MySqlConnectorでBeginTransactionAsyncができない。
例外も発生しない。

調べたこと

  • Select/Insert/Updateは問題なくできている
  • コンソールアプリ、API等でも発生する
  • ドライバがMySql.Data(8.4.0)であれば、当該事象は発生しない
  • ドライバがMySqlConnector(2.2.7)であれば、当該事象は発生しない
  • ライブラリ内をステップ実行したところ、BeginTransactionAsyncから、m_session.SendRawAsyncでトランザクション開始と思われるリクエストをRDBに送信し、m_session.RecieveReplyAsyncで受信処理を行っている
    SendRawAsyncのコメントに「2つのパケットを一緒に送っている」と書かれており、その後RecieveReplyAsyncが2度実行されている。1回目のRecieveReplyAsyncは正常に戻っているようだが、2回目のRecieveReplyAsyncでフリーズする。
2

1Answer

自己解決しました。
RDS:MySQL5.7と書いていましたがAurolaでした。
https://mysqlconnector.net/troubleshooting/aurora-freeze/
Amazon Aurora が MySQL プロトコルのパイプラインを正しくサポートしていないことに起因する問題のようで、Pipelining = False;接続文字列に追加してパイプライン機能を無効にすることで解決しました。

2

Your answer might help someone💌