aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/SPTableData.m14
1 files changed, 9 insertions, 5 deletions
diff --git a/Source/SPTableData.m b/Source/SPTableData.m
index 207848db..51d490d9 100644
--- a/Source/SPTableData.m
+++ b/Source/SPTableData.m
@@ -1088,25 +1088,29 @@
NSInteger i;
NSMutableArray *keyColumns = [NSMutableArray array];
- r = [mySQLConnection queryString:[NSString stringWithFormat:@"SHOW COLUMNS FROM %@ WHERE `key` = 'PRI'", [selectedTable backtickQuotedString]]];
+ // select all columns that are primary keys
+ // MySQL before 5.0.3 does not support the WHERE syntax
+ r = [mySQLConnection queryString:[NSString stringWithFormat:@"SHOW COLUMNS FROM %@ /*!50003 WHERE `key` = 'PRI'*/", [selectedTable backtickQuotedString]]];
[r setReturnDataAsStrings:YES];
if([r numOfRows] < 1) return nil;
if ([mySQLConnection queryErrored]) {
if ([mySQLConnection isConnected])
- NSRunAlertPanel(@"Error", [NSString stringWithFormat:@"An error occured while retrieving the PRIAMRY KEY data:\n\n%@", [mySQLConnection getLastErrorMessage]], @"OK", nil, nil);
+ NSRunAlertPanel(@"Error", [NSString stringWithFormat:NSLocalizedString(@"An error occured while retrieving the PRIMARY KEY data:\n\n%@",@"message when the query that fetches the primary keys fails"), [mySQLConnection getLastErrorMessage]], @"OK", nil, nil);
return nil;
}
for( i = 0; i < [r numOfRows]; i++ ) {
resultRow = [r fetchRowAsArray];
- [keyColumns addObject:[NSArrayObjectAtIndex(resultRow, 0) description]];
+ // check if the row is indeed a key (for MySQL servers before 5.0.3)
+ if ([[[resultRow objectAtIndex:3] description] isEqualToString:@"PRI"]) {
+ [keyColumns addObject:[[resultRow objectAtIndex:0] description]];
+ }
}
- if([keyColumns count])
- return keyColumns;
+ if([keyColumns count]) return keyColumns;
return nil;
}