gpt4 book ai didi

mysql错误: Lock wait timeout exceeded

转载 作者:行者123 更新时间:2023-11-30 21:23:38 27 4
gpt4 key购买 nike

我在我的网络服务器上同时使用 mysql 和 asp.net。我还使用 sqlite 数据库以便能够在另一台设备上使用该数据库。我需要在两个数据库之间发送数据。这是一天需要做很多次的事情。这是我如何做的一个例子:

    using (MySqlTransaction mysqltransaction = mysqlconn.BeginTransaction())
{
using (mysqlcmd)
{
//Creates parameters
MySqlParameter parmitemid = new MySqlParameter("?itemid", MySqlDbType.Int32);
mysqlcmd.Parameters.Add(parmitemid);
//Creates more parameters, can't show them all...

//For each row in the sqlite table, do the insert
while (reader.Read())
{
//Sets the parameters, can't show them all
parmitemid.Value = reader.GetInt(1);
mysqlcmd.CommandText = "INSERT INTO tblitem (itemid,......,customerid) VALUES (?itemid,......,(SELECT customerid FROM tblcustomer WHERE fid=?fid ORDER BY customerid DESC LIMIT 1))";
mysqlcmd.ExecuteNonQuery();
}
}
mysqltransaction.Commit();
}

我就是这样做的,正如我在评论中所写的那样,还有更多的参数,但它们都与第一个相同。在数据库之间发送数据时,我有 20 组不同的代码做与此处代码几乎相同的事情。但正如你所理解的,我无法将它们全部展示出来......

有时可能需要插入 3000-4000 行,但通常很小,如 1-50 行。

问题是我时不时遇到这个错误“超出锁定等待超时;尝试重新启动事务”,想知道我能做些什么来避免它?

而且整个解决方案似乎很慢。难道我需要为每个插入查询做一个子选择吗?

谢谢!

最佳答案

您可以使用以下语法一次插入多行:

INSERT INTO table (col1, col2) VALUES ('a', 1), ('b', 2), ('c', 3)

这将一次插入三行,而且速度

关于mysql错误: Lock wait timeout exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com