您好:我在Apache下运行使用PHP7.0 OO风格编写的无状态(REST)Web服务。他们使用mysqli连接到AWS上的mariaDB实例。我们发现了一个数据库同步问题,并不确定问题出在哪里或如何解决。如何在刚刚插入的记录上解决mysqli-mariaDB更新失败
客户呼叫到服务1将插入一个记录,并返回由$ i_primary_key = $这个 - > DB-> INSERT_ID,后成功插入检索的自动生成的主密钥;
下一个客户端调用将使用该主键执行服务2,将更新
自服务1和2是分开的HTTPS电话,他们创建自己的连接,资源等方面的记录
问题是,有时服务2失败,抱怨带有这种主键的记录不存在。在获得服务1的结果后再尝试或人工延迟呼叫服务2,并且事情按照他们应该的方式工作。
如何告诉mariaDB引擎或mysqli API在插入后刷新其缓存?我只是猜测服务1中的引擎/连接尚未将其资源提供给其自己的内部服务器,因此引擎的其他客户端不会看到最新的更改/数据。
有什么建议吗?
感谢
嗨:autocommit是1.正如我写的,这些服务大多工作。有一段时间它不会。实际上它只发生在我们的测试环境中,在那里我们通过编程方式生成调用轰击服务器......将尝试明确的START/COMMIT,它应该有所帮助,但不确定我们是否解决了根本原因,因为autocommit已经= 1。 , 会尝试。 –
您是否在每次查询后检查错误? –
嗨:启动和提交没有帮助。 INSERT总是对服务1的调用者起作用,因为它确实获得了插入的键值。没有错误。决不。问题是服务2调用者,即使他知道这个键,当他执行服务2时,更新,更新有时会失败,并且记录不存在。所以,回到原来的问题,如上所述。 API-to_Engine级别存在更深层次的问题。 –