在解释问题之前,我先让您陷入困境。
我有两台服务器,一台用于我的网站,另一台用于MySQL中的数据库。
网络连接到MySQL并使用其数据运行。
每个首次打开网络的用户都被分配了一个唯一的ID,但是很多时候这些ID被重复并且同一ID被分配给不同的用户。
我通过称为“ my_block_ids”的MySQL表的Web的VB.net代码获取这些ID,该表具有以下字段:“ id”,“ year”和“ type”。
我用来获取要分配给用户的ID并锁定表,直到使用以下要分配的ID对其进行修改的代码如下:
Dim id As Integer = 0
Dim sSQL As String = "START TRANSACTION;"
sSQL &= "SELECT id FROM my_block_ids WHERE year = 2019 AND type=3 FOR UPDATE;"
id = DB.Value(sSQL)
sSQL = "UPDATE my_block_ids Set id=id+1 WHERE year = 2019 And type=3 And id=" & id.ToString & "; COMMIT;"
我检测到的问题是MySQL检测到所有请求都来自相同的应用程序/程序,并且没有使用“ SELECT ... FOR UPDATE”语句多次向不同的用户分配相同的ID来阻塞该表。
如果有人能给我解决问题的方法,我将不胜感激。