MS Access事务提交但未保存到数据库

时间:2014-10-09 18:03:53

标签: ms-access transactions workspace

我正在使用MS Access前端到MySQL后端,在MASTER-2-MASTER设置中复制。在不同的机器上有三个用户,都有自己的前端安装,所有用户同时查询数据库并将数据插入MySQL中的三个Innodb表。

我在MS Access中设置了一个事务,我调用table1的insert函数,检索变量“k”值,然后调用另外两个函数,使用“k”作为插入Table2和Table3的函数外键。在Ms Access中提交事务后,报表会在一个报表上打印三个表中的新行。

打开报告的命令出现在committrans之后,并使用变量“k”作为where条件,如下所示:

“[Id] =”& ķ

问题是,每100个进程中大约有2个成功打印报告,其中包含来自连接表的所有信息,就像所有内容都已成功添加并提交到数据库一样,但是在查看数据库时,记录不是找到。

在检查MySQL数据库之后,主键中似乎存在间隙,我认为只有在实际存在某些内容然后删除时才会发生这种情况,但是我检查了MySql binlog并且没有看到任何执行删除命令的表格。

使用Set ws = DBEngine.Workspaces(0)启动事务会有问题,但是在打开记录集时使用Set db = CurrentDb吗?还有其他想法吗?

以下是从Access到MySQL的当前流程并返回:

访问MYSQL
的BeginTrans
-------------------------------------------->通过锁定表
--------------------------------------------> PassThrough插入表1中 k< ------------------------------------------将table1中的last_insertid返回到ķ
--------------------------------------------> Passthrough插入table2 foreignkey = k
--------------------------------------------> Passthrough插入table3 foreignkey = k
可选-----------------------------------> Passthrough插入table4 foreignkey = k
可选-----------------------------------> Passthrough插入table5 foreignkey = k
可选-----------------------------------> Passthrough插入table6 foreignkey = k
本地插入table7 foreignkey = k
本地插入table8 foreignkey = k
--------------------------------------------> PassThrough UNLOCK TABLES
CommitTrans
打印报告(recordsource =链接表1过滤器在k上)

提前致谢。

0 个答案:

没有答案
相关问题