aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2012-08-18 14:18:29 +0000
committerrowanbeentje <rowan@beent.je>2012-08-18 14:18:29 +0000
commiteda4399be690cb325bb03d3195654e38ed061738 (patch)
treede1b9e4d6492ab0ab2446c0747b4db0539777e3c /Source
parent70467916504f6052869dfdf618e5a677bd0cf366 (diff)
downloadsequelpro-eda4399be690cb325bb03d3195654e38ed061738.tar.gz
sequelpro-eda4399be690cb325bb03d3195654e38ed061738.tar.bz2
sequelpro-eda4399be690cb325bb03d3195654e38ed061738.zip
Improve connection handling and recovery in general, and specifically to address Issue #877:
- On servers with very short timeouts set the wait_timeout for the session as well as the interactive_timeout to prevent the connection from dropping frequently - Improve recovery from connection errors, correctly restoring the connection if appropriate and possible - Allow reconnections to occur recursively by altering the internal tracking mechanism - Fix some edge cases where the connection would remain locked incorrectly - Improve error messaging for the "MySQL Server has gone away" network case
Diffstat (limited to 'Source')
-rw-r--r--Source/SPCustomQuery.m6
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m
index bc80d971..411527e3 100644
--- a/Source/SPCustomQuery.m
+++ b/Source/SPCustomQuery.m
@@ -685,6 +685,12 @@
errorString = NSLocalizedString(@"Query cancelled.", @"Query cancelled error");
} else {
errorString = [mySQLConnection lastErrorMessage];
+
+ // If dealing with a "MySQL server has gone away" error, explain the situation.
+ // Error 2006 is CR_SERVER_GONE_ERROR, which means the query write couldn't complete.
+ if ([mySQLConnection lastErrorID] == 2006) {
+ errorString = [NSString stringWithFormat:@"%@.\n\n%@", errorString, NSLocalizedString(@"(This usually indicates that the connection has been closed by the server after inactivity, but can also occur due to other conditions. The connection has been restored; please try again if the query is safe to re-run.)", @"Explanation for MySQL server has gone away error")];
+ }
}
// If the query errored, append error to the error log for display at the end