简体   繁体   中英

C# MySql Timeout expired

Im using MySql.Data on C# and a INSERT query is throwing a exception:

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.    at MySql.Data.MySqlClient.ExceptionInterceptor.Throw(Exception exception)
       at MySql.Data.MySqlClient.MySqlConnection.Throw(Exception ex)
       at MySql.Data.MySqlClient.MySqlConnection.HandleTimeoutOrThreadAbort(Exception ex)
       at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
       at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
       at WarehouseMgr.SyncServiceLib.RequestCreator.CreateRequest(RequestPackage package, MySqlConnection db, ILog log, ConfigFile config, String log_prefix) in z:\WORKSPACE\Web\W_WarehouseMgr\WebApp\SyncService_Library\RequestCreator.cs:line 229
       at WarehouseMgr.SyncServiceLib.InputWork.InputWorker.RunWorkOnce() in z:\WORKSPACE\Web\W_WarehouseMgr\WebApp\SyncService_Library\InputWork\InputWorker.cs:line 152

Any ideas?

Edit:

The code for the insert query:

var reqId = 0;


 var reqSql =
            "INSERT INTO `requests` (`uid`, `label_id`, `corridor_id`, `status`) VALUES (@p_uid, @p_label_id, @p_corridor_id, 'waiting');" +
            "SELECT `id` FROM `requests` WHERE uid = @p_uid LIMIT 1;";
        using (var cmd = new MySqlCommand(reqSql, db)) {
            cmd.Parameters.AddWithValue("@p_uid", package.RequestUid);
            cmd.Parameters.AddWithValue("@p_label_id", labelId);
            cmd.Parameters.AddWithValue("@p_corridor_id", corridorId);
            using (var reader = cmd.ExecuteReader()) {
                if (reader.Read()) {
                    reqId = reader.GetInt32("id");
                }
            }
        }

        if (reqId <= 0) {
            log.E(TAG, log_prefix + "Request creation failed");
            throw new Exception("Request creation failed");
        }

When making a command set a command timeout. So just add

cmd.CommandTimeout = xxx;

It's in seconds so set as much as you need. 0 = unlimited.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM