2
我有一个PHP脚本,可以同时用于MySQL数据库和ODBC数据库连接(QODBC到QuickBooks)。设置是这样的:意外的MySQL事务提交
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事务关闭并自动提交。
你应该使用InnoDB在mySQL中使用事务。 – Tareq 2011-04-25 17:17:40
所有表都是INNODB。连接设置为自动提交(默认为mysql),但通过发布Begin来读取MySQL文档;声明,自动提交被禁用以下查询。所以,据我了解,循环中发生的所有查询都应该立即提交 - 而不是与ODBC DB建立连接时。 – Conor 2011-04-25 17:30:06
我不确定我是否理解“何时与ODBC建立连接”部分?你是否打开第二个连接?是否可能打开该连接隐式关闭第一个连接?对不起,我不知道PHP,所以我只能猜测。 – 2011-04-25 17:33:47