17

In recent times, a particular page in my web app throws the

Exception Details: MySql.Data.MySqlClient.MySqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Though I use Ibtais as persistence layer, this error occurs. I have restarted the MySql service instance but stil i get the same error. It didn't happen earlier but happens frequently in recent times.

All the web applications deployed on the server uses Ibatis and the DB server remains on the same machine where IIS is installed. There are about 8000 records in which around 300 to 500 would be filtered on page load

Any insights for the cause of the problem?

Gilad Green
  • 36,708
  • 7
  • 61
  • 95
Gopi
  • 5,656
  • 22
  • 80
  • 146
  • Is your CommandTimeout parameter set in your connection string? Maybe you could increase the value? – Nathan Taylor Aug 13 '10 at 10:12
  • @Nathan No! would that be in seconds or in milliseconds? – Gopi Aug 13 '10 at 10:18
  • Milliseconds I believe. I have CommandTimeout=30000 in my MySQL connection string. – Nathan Taylor Aug 13 '10 at 10:29
  • @Nathan Thanks! It works well! Pl post it as the answer, will accept. – Gopi Aug 13 '10 at 10:31
  • 3
    I was just looking at this, and according to the docs the CommandTimeout is in seconds, not milliseconds. Just thought someone might want to know. See [25.2.3.1.11. CommandTimeout on dev.mysql.com](http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html#connector-net-examples-mysqlcommand-commandtimeout). – Phil Baines Mar 12 '12 at 17:22
  • Oh, sorry that's the CommandTimeout property on MySqlCommand - not the connection string. – Phil Baines Mar 12 '12 at 17:29
  • 1
    But [this page](http://dev.mysql.com/doc/refman/5.1/en/connector-net-connection-options.html) does show the connection string setting IS used in seconds. – Phil Baines Mar 12 '12 at 17:32
  • Could you please provide an example query so we can see if there may be a problem with the query being executed? – NoLifeKing Jul 03 '12 at 06:22

3 Answers3

29

I encountered the same problem with yours, and I found this MySQLConnection--Specifying default command timeout.

Just add "default command timeout=xxx" into your connectString, this key's value is in seconds.
I tried and it worked for me.

Raven
  • 426
  • 4
  • 7
4

You could set command timeout to 0, its not a good idea though. Some requests could go on indefinitely.

There is an underlying problem that is causing the queries to time out in the first place. Are you inserting, updating, or in any way working with large binary values that would lock the table? That is the most common reason I see for an error like this on such a small amount of data.

Dabloons
  • 1,462
  • 2
  • 17
  • 30
0

Make your connection string look like this:

DotNet Framework:

<add key="MYSQL_CONNECTION_STRING_RDS" value="Uid=userid;Password=pass;
     Server=localhost;Port=3306;
     Database=dbname;default command timeout=0;SslMode=none" 
/>

DotNet Core

"MYSQL_CONNECTION_STRING_RDS": {
    "ConnectionString": "Server=localhost;Database=dbname;user=userid;password=pass;default command timeout=0;",
    "ServerVersion": "8.0.22"
  }
JEuvin
  • 866
  • 1
  • 12
  • 31