这个错误是由于 MySQL 的事务锁等待超时引起的。它表示在等待锁定资源时超过了设置的超时时间。

解决这个问题的一种方法是尝试重新启动事务,以便再次尝试获取锁定资源。你可以在代码中使用'try-catch'块来捕获该错误,并在捕获到错误时重新启动事务。

以下是一个示例代码:

using (var connection = new MySqlConnection(connectionString))
{
    await connection.OpenAsync();

    using (var transaction = await connection.BeginTransactionAsync())
    {
        try
        {
            // 执行插入数据的逻辑
            // ...

            await transaction.CommitAsync();
        }
        catch (MySqlException ex) when (ex.Number == 1205) // 错误码 1205 表示锁等待超时
        {
            // 锁等待超时,重新启动事务
            await transaction.RollbackAsync();
            await transaction.DisposeAsync();
            await connection.CloseAsync();

            // 重新创建连接和事务对象
            using (var newConnection = new MySqlConnection(connectionString))
            {
                await newConnection.OpenAsync();
                using (var newTransaction = await newConnection.BeginTransactionAsync())
                {
                    // 重新执行插入数据的逻辑
                    // ...

                    await newTransaction.CommitAsync();
                }
            }
        }
    }
}

请注意,这只是一种解决方法,具体的实现方式可能因你的代码结构和需求而有所不同。你可以根据自己的情况来调整代码。另外,你还可以尝试调整 MySQL 的配置参数来增加锁等待的超时时间。

.NET 6 MySQL 新增数据报错: Lock wait timeout exceeded; try restarting transaction

原文地址: https://www.cveoy.top/t/topic/qfkP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录