내 웹 서버에서 asp.net과 함께 mysql을 사용하고 있습니다. 나는 또한 sqlite 데이터베이스를 사용하여 다른 장치에서 데이터베이스를 사용할 수 있습니다. 두 데이터베이스간에 데이터를 보내야합니다. 이것은 하루에 여러 번해야 할 일입니다.mysql 오류 : 잠금 대기 시간 초과가
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과 같이 작은 경우가 있습니다.
문제는이 오류가 "Lock 대기 제한 시간을 초과했습니다. 트랜잭션을 다시 시작하십시오."라는 오류가 발생하여이를 피할 수 있는지 궁금해합니다.
또한 전체 솔루션이 느리게 보입니다. 각 삽입 쿼리에 대해 subselect를 수행해야합니까?
감사합니다.