窗体上放1个mysql50connection,1个sqltransaction,1个sqlquery,连通。运行后关闭窗体,会提示异常:SQLTransaction1:Operation cannot be performed on an active transaction.
跟踪后发现原来是mysql50connection的rollback方法返回了false。这样在TSQLTransaction.Rollback中以为rollback失败了,就没有关闭transaction,引起以后释放时抛出异常。所以修改mysqlconn.inc
function TConnectionName.RollBack(trans: TSQLHandle): boolean;
begin
result:=true;
end;
问题解决(原文居然就写了一句// Do nothing 就算了,真不知道发布的人有没有测试过)。
我的环境:
ubuntu 10.04
fpc 2.4
laz:0.9.28.2