意外的MySQL事务提交

时间:2011-04-25 16:36:16

标签: php mysql transactions odbc

我有一个PHP脚本,可以同时使用MySQL数据库和ODBC数据库连接(QODBC到QuickBooks)。设置如下:

Retrieve rows from MySQL database
Begin MySQL transaction:
    Loop through rows
    Process data
    MySQL Insert/Update
    MySQL Update
    QODBC Selects/Inserts
End Loop
    MySQL Delete
Commit Transaction

问题是,如果QODBC部分出现错误,那么将提交到那时为止的MySQL命令。这导致MySQL中出现重复和错误的数据。没有嵌套事务,所有查询都成功/失败(即没有致命错误或过早退出脚本)。

问题是 - 在同一个脚本中通过PHP连接到两个不同的数据库时是否存在问题?似乎正在发生的事情是当脚本到达ODBC部分时,MySQL事务被关闭并自动提交。

1 个答案:

答案 0 :(得分:3)

我想说有两个可能的原因:

  • 您的表是使用不支持交易的MyISAM创建的
  • 您的连接已设置为autocommit