mysql错误:超过锁定等待超时
我在我的Web服务器上使用mysql和asp.net。我还使用sqlite数据库,以便能够在其他设备上使用该数据库。我需要在两个数据库之间发送数据。这是每天需要做很多次的事情。这是我如何做到这一点的一个例子:mysql错误:超过锁定等待超时,mysql,transactions,locking,Mysql,Transactions,Locking,我在我的Web服务器上使用mysql和asp.net。我还使用sqlite数据库,以便能够在其他设备上使用该数据库。我需要在两个数据库之间发送数据。这是每天需要做很多次的事情。这是我如何做到这一点的一个例子: using (MySqlTransaction mysqltransaction = mysqlconn.BeginTransaction()) { using (mysqlcmd) {
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)
这将一次插入三行,而且速度要快得多。您可以使用以下语法一次插入多行:
INSERT INTO table (col1, col2) VALUES ('a', 1), ('b', 2), ('c', 3)
这将一次插入三行,而且速度要快得多