3

Snap 0.6 と Snaplet-hdbc インフラストラクチャを使用して Web アプリを作成しています。バックエンドでは、HDBC-mysql を使用して MySQL に接続しています。しかし、アプリを実行すると、MySQL から「コマンドが同期されていません。現在、このコマンドを実行できません」というエラーが表示されます。各クエリに「withTransaction」を使用しています。グーグルで調べたところ、MySQL は複数のクエリをサポートしていないようです。しかし、HDBC を使用してそれを回避するにはどうすればよいでしょうか?

4

1 に答える 1

0

いくつかの調査の後、私は解決策を見つけました。withTransactionまたはcommitでSELECTステートメントを使用しないでください。また、SELECTには「クエリ」を使用しないでください。私の意見では、HDBC-mysqlはmysqlclientライブラリを使用しているため、最後のクエリのデータがまだ使用されていないか解放されている場合、新しいクエリを発行することはできません。haskellの怠惰により、withTransactionでSELECTを実行すると、コードで必要になるまでデータが使用されないため、withTransaction関数がcommitを呼び出すと、「Commandoutofsync」エラーが発生します。query'の場合、選択された行数を返す可能性がありますが、選択されたデータはmysqlclientライブラリによってバッファリングされるため、問題が発生します。

于 2011-11-07T02:32:53.890 に答える