Informix Version 11.7。
当我们尝试执行查询时获得以下异常:
错误[HY000] [Informix .NET提供程序] [Informix]不在事务中..
在执行之前,我们检查连接状态显示为“OPEN”,但我们仍然收到此错误。
如果有人遇到类似的例外,请分享一下吗?
答案 0 :(得分:2)
Informix可以支持具有不同':
的数据库从你得到的错误(" -255:不在事务")中,你似乎正在使用一个已记录的数据库,而你正在执行的语句需要一个事务,但你不是& #39;在交易中。获得此主题的主要上下文是在执行BEGIN WORK语句之前执行COMMIT或ROLLBACK。如果您使用的是未记录的数据库,那么您将获得" -256:交易不可用"作为信息;如果您使用的是MODE ANSI数据库,则可以进行COMMIT或ROLLBACK,但是一旦您执行了除此之外的语句(例如,SELECT),您就无法进行明确地开始工作 - 你得到错误" -535:已经在交易"。
因此,似乎yu有一个已记录的数据库,您的代码在执行BEGIN WORK之前执行了COMMIT或ROLLBACK(可能在幕后)。
要解决此问题,您可以考虑切换到MODE ANSI数据库(不要轻易做出改变 - 对更改有其他影响,通常会对应用程序产生重大影响,这意味着它可能不会对应用程序造成影响。 (正确答案),但您可能需要确保您的软件包知道您所连接的Informix数据库的规则,并明确启动与BEGIN WORK的交易或不发送执行BEGIN WORK之前的COMMIT或ROLLBACK操作。
(在数据库中,当没有正在进行的事务时,每个单独的SQL语句形成自己的事务。如果会话以正在进行的未提交事务终止,则该事务将被回滚。更改仅提交 < / em>如果给出了显式COMMIT。)