当前位置: 首页 > 知识库问答 >
问题:

mysqli::commit()返回false,但没有错误消息

杜英范
2023-03-14

在try/catch块中有三个sql查询。Autocommit是关闭的,并且所有三个查询都没有错误地运行,我已经验证了这一点(如果任何查询失败,它应该不会到达commit行,但是我已经通过xdebug验证了它,一次单步执行代码一行)。当代码到达commit()函数调用时,mysqli返回false,但没有错误消息。当前面的查询都工作时,提交怎么会失败呢?

代码基本上是这样的:

try{
    $mysqli->autocommit(false);

    $sql1 = "insert into...";
    $mysqli->query($sql); // Works!
    if($mysqli->error)
    {
        $mysqli->rollback();
        throw new Exception....
    }


    $sql2 = "insert into...";
    $mysqli->query($sql); // Works!
    if($mysqli->error)
    {
        $mysqli->rollback();
        throw new Exception....
    }


    $mysqli->commit(); // Fail

}

共有1个答案

程成天
2023-03-14

检查是否有: (当然,如果您想在表中写入/insert)

尝试按照以下步骤进行调试:[--start transaction Code--]

Q2=mysqli-&>query(query2)//查询事务内部

打印'q2:'.mysqli-&>错误;

[---提交/回滚条件/代码---------]

您可能会收到此错误:“在只读事务中无法执行语句”。-&>;将begin transaction的参数更改为MYSQLI_TRANS_START_READ_WRITE

还要检查为要使用事务的表设置innoDB引擎。

您还可以在事务块之外测试查询,以确保它们没有错误。

 类似资料:
  • 问题内容: 我有一个返回内部服务器错误(500)的php应用程序时出现问题,但错误日志中未显示任何内容。 现在,我知道我要运行的内容有错误,我知道缺少某些文件,但没有丢失,但是应该在apache错误日志中显示某些内容(否则,我应该如何确切知道丢失的内容)。 我创建了一个测试脚本,该脚本在相同的vhost配置下出错,并且这些错误显示得很好,因此一切似乎都已正确配置到php / apache。是否有某

  • 问题内容: 我试图逐行获取两个文件之间的差异,Python总是返回false。即使我比较相同的文件,Python(几乎)总是返回false。高飞的例子,但它在Python3.4.3上复制了我的问题。 Python正确地识别出第一行是相同的,但是之后的所有内容都是错误的。有人可以复制吗?有任何想法吗? 问题答案: 第一次迭代结束后,您已经用尽了迭代器,需要返回到文件的开头。 你只检查的第一线对的线,

  • 在我的MySQL数据库中,我有一个表"table1",在列"name"上设置了唯一约束-我想防止重复的名称。 如果表中已经有名字'John',则此代码: 应该抛出insertUnonnequeException()(我自己的异常)。相反,它抛出InsertException()。 查询的执行返回false,执行进入if()循环。另外$db- 我不知道为什么当发生唯一密钥约束冲突时,mysqli不返

  • 是否有一种方法可以将catch{}以序列化为JSON对象的方式从catch{}返回错误消息?我考虑向myObject添加一个List属性,并在其中存储错误。有没有更好的办法做到这一点?

  • 问题内容: 以下代码似乎不起作用,即使该文件看起来很好也是如此。 在此先感谢您的帮助。 编辑:结果是我试图去Graphics.drawImage(images [0]);,它给了我一个空指针异常。这段代码可以很好地完成。 编辑:更改按建议移动if(!file.exists()),并将文件包装在输入流中。 问题答案: ImageIO.read(file); 如果找不到注册的 ImageReader,

  • 问题内容: 当我尝试从Java代码中删除tomcat服务器conf / Catalina / localhost中存在的文件时,file.delete()始终返回false。但是,如果我通过file.exists()函数检查文件,它将返回true。我没有任何例外。请帮助我们为什么会这样。有什么解决方案? 问题答案: 当我尝试从Java代码中删除tomcat服务器conf / Catalina /