aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2010-06-02 00:21:46 +0000
committerrowanbeentje <rowan@beent.je>2010-06-02 00:21:46 +0000
commit6a50c5b04187d6546aa11c50a38f77b8ba132565 (patch)
treec4704f8afc356c49d918e09a7c6134b798b00138
parentafa83e2e94ec0abe2cd6c2cbf4fe43d5616bbc6c (diff)
downloadsequelpro-6a50c5b04187d6546aa11c50a38f77b8ba132565.tar.gz
sequelpro-6a50c5b04187d6546aa11c50a38f77b8ba132565.tar.bz2
sequelpro-6a50c5b04187d6546aa11c50a38f77b8ba132565.zip
- Fix exceptions and crashes caused by corrupt tables, disabled storage engines, or similar hard MySQL errors
-rw-r--r--Source/SPExtendedTableInfo.m4
-rw-r--r--Source/SPTableData.m6
2 files changed, 9 insertions, 1 deletions
diff --git a/Source/SPExtendedTableInfo.m b/Source/SPExtendedTableInfo.m
index 605cec35..d9d720fa 100644
--- a/Source/SPExtendedTableInfo.m
+++ b/Source/SPExtendedTableInfo.m
@@ -360,7 +360,9 @@
[tableCreateSyntaxTextView setString:@""];
[tableCreateSyntaxTextView didChangeText];
[tableCreateSyntaxTextView shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:[tableDataInstance tableCreateSyntax]];
- [tableCreateSyntaxTextView insertText:[[tableDataInstance tableCreateSyntax] stringByAppendingString:@";"]];
+ if ([tableDataInstance tableCreateSyntax]) {
+ [tableCreateSyntaxTextView insertText:[[tableDataInstance tableCreateSyntax] stringByAppendingString:@";"]];
+ }
[tableCreateSyntaxTextView didChangeText];
[tableCreateSyntaxTextView setEditable:NO];
diff --git a/Source/SPTableData.m b/Source/SPTableData.m
index ea9229cb..35d7060b 100644
--- a/Source/SPTableData.m
+++ b/Source/SPTableData.m
@@ -850,6 +850,12 @@
[status setObject:[status objectForKey:@"Type"] forKey:@"Engine"];
}
+ // If the "Engine" key is NULL, a problem occurred when retrieving the table information.
+ if ([[status objectForKey:@"Engine"] isNSNull]) {
+ [status setDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"Error", @"Engine", [NSString stringWithFormat:@"An error occurred retrieving table information. MySQL said: %@", [status objectForKey:@"Comment"]], @"Comment", [tableListInstance tableName], @"Name", nil]];
+ return FALSE;
+ }
+
// Add a note for whether the row count is accurate or not - only for MyISAM
if ([[status objectForKey:@"Engine"] isEqualToString:@"MyISAM"]) {
[status setObject:@"y" forKey:@"RowsCountAccurate"];