2

問題を切り分けるために (ほぼ) あらゆることを試みましたが、道に迷っています。

ADODB を使用してローカルの MySQL データベースに接続する MS Access アプリケーションがあります。それを新しいコンピューターにコピーしましたが、ストアド プロシージャの出力パラメーターには毎回ランダムな値が含まれるようになりました (ADODB 経由で実行した場合)。MySQL WorkBench で実行すると、出力パラメーターは正しくなります。

2 台の PC のスペックは次のとおりです。

  1. old : Windows 7 Pro、Office 2010 ProPlus、MySQL ODBC 5.3.4、MySQL サーバー 5.6.22 (すべて 64 ビット。32 ビット ODBC もインストールされています)。
  2. new : Windows 10 Pro、Office 2016 ProPlus、MySQL ODBC 5.3.6、MySQL サーバー 5.7.16 (MS Office を除くすべてが 64 ビットです。32 ビット ODBC もインストールされます)。

問題を切り分けるために、次の単純なストアド プロシージャを使用しました。

CREATE PROCEDURE `testit`(
    OUT iTest INT(11))
BEGIN
    SET iTest = 123;
END

また、次の VBA コード (および Microsoft ActiveX Data Objects 6.1 ライブラリへの参照) のみを含むテスト MS Access データベース:

Public Function dbTestIt() As Long

Dim dbConn As ADODB.Connection
Dim dbCmd As ADODB.Command

    'Open new connection
    Set dbConn = New ADODB.Connection
    dbConn.ConnectionString = "Driver={MySQL ODBC 5.3 Ansi Driver};option=3;database=xxx;user=root;password=yyy;"
    dbConn.Open

    'Execute new command
    Set dbCmd = New ADODB.Command
    With dbCmd
        Set .ActiveConnection = dbConn
        .CommandTimeout = 0
        .CommandType = adCmdStoredProc
        .CommandText = "testit"
        .Parameters.Append dbCmd.CreateParameter("iTest", adInteger, adParamOutput)
        .Execute
        dbTestIt = dbCmd.Parameters.Item(0).Value
    End With

    'Close Connection
    dbConn.Close

End Function

テスト結果は次のとおりです。

  1. 古いコンピュータでは、dbTestIt() は常に 123 を返します。
  2. 新しいコンピュータでは、dbTestIt() はランダムな値を返します (例: 51, 1936020585, 1)。
  3. また、新しいコンピューターから古いコンピューターの MySQL サーバーに(接続文字列で server=192.168.1.x を使用して) 接続すると、常に 123 も返されます。
  4. これは、問題が (のみ)新しいコンピューターのMySQL サーバーにあることを示しています (そうですか?)。
  5. ただし、古いコンピューターから新しいコンピューターの MySQL サーバーに接続すると、常に 123 が返されます。

では、問題は新しいコンピューターのコンポーネントの組み合わせにあるようですが、どれがなぜでしょうか? そして、それをテストする方法は?

誰か明るいアイデアはありますか?

4

3 に答える 3

3

問題の原因をさらに特定するために、新しいコンピューターの MySQL ODBC ドライバー 5.3.6 をバージョン 5.3.4 (古いコンピューターにある) にダウングレードしたところ、動作するようになりました。これが本当に原因であることを確認するために、バージョン 5.3.6 に再度アップグレードしましたが、再び失敗しました。

したがって、MySQL ODBC ドライバー 5.3.6 (8 か月前にリリースされました!) は、(ローカル) MySQL Server 5.7.16 からの出力パラメーターの処理に問題があるようです。おそらく、ADODB と Windows 10 との組み合わせでのみ発生します。

そのため、当面は 5.3.4 バージョンを使用し、MySQL にバグを報告します。

于 2016-11-15T09:05:32.027 に答える