我正在使用Snap0.6和Snaplet hdbc基础架构编写一个web应用程序。在后台,我使用HDBC-mysql连接到MySQL。但在运行该应用程序时,它会收到来自MySQL的“命令不同步,您现在无法运行此命令”错误。我对每个查询都使用withTransaction。经过谷歌搜索,MySQL似乎不支持多个查询。但是如何使用HDBC避免这种情况呢?
发布于 2011-11-07 10:32:54
经过一番调查,我找到了解决方案。不要在withTransaction或with commit中使用SELECT语句。对于SELECT,不要使用query‘。在我看来,HDBC-mysql使用的是mysqlclient库,所以当最后一个查询的数据仍然未使用或释放时,您不能发出新的查询。由于haskell的惰性,如果您在withTransaction中运行SELECT,数据直到您的代码需要它时才会被使用,所以当withTransaction函数调用commit时,它将导致"Command out of sync“错误。对于query',它可能会返回选定的行数,但选定的数据是由mysqlclient库缓冲的,所以这就是问题所在。
https://stackoverflow.com/questions/8027948
复制相似问题