我们使用 MySQL 和 Innodb 引擎存储。我们有一个“事件”环境,可以在一个表上发送多个并发请求。基本上,它的工作原理是这样的:我们有一个 find_or_insert 函数可以做到这一点: - find() -> 在结果上,如果为空 -> 插入 -> 在结果上 find()
我们使用的是非阻塞 MySQL 驱动程序,所以基本上,当我们同时启动这个小算法不止一次时,它会在插入第一个结果之前运行所有的发现......等等。
不幸的是,我们收到这些错误:“尝试获取锁定时发现死锁;尝试重新启动事务”
任何人都可以帮忙吗?
[编辑]:另外,我实际上不明白为什么 MySQL 需要锁定表只是为了在这里插入一个新元素。最初我虽然自动增量是这里的罪魁祸首,所以我删除了它......但我仍然得到错误。有没有办法防止 MySQL 在插入时锁定表?