aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/SPTableCopy.m49
1 files changed, 21 insertions, 28 deletions
diff --git a/Source/SPTableCopy.m b/Source/SPTableCopy.m
index d868c9ad..5af46972 100644
--- a/Source/SPTableCopy.m
+++ b/Source/SPTableCopy.m
@@ -52,35 +52,28 @@
NSString *createTableResult = [self getCreateTableStatementFor:tableName inDB:sourceDB];
NSMutableString *createTableStatement = [[NSMutableString alloc] initWithString:createTableResult];
- // adding the target DB name and the separator dot after "CREATE TABLE ".
- [createTableStatement insertString:@"." atIndex:13];
- [createTableStatement insertString:[targetDB backtickQuotedString] atIndex:13];
- /*
- // this only works with MySQL >= 4.1
- NSString *copyStatement = [NSString stringWithFormat:@"CREATE TABLE %@.%@ LIKE %@.%@",
- [targetDB backtickQuotedString],
- [tableName backtickQuotedString],
- [sourceDB backtickQuotedString],
- [tableName backtickQuotedString]
- ];
- DLog(@"Copying table %@ from %@ to %@", tableName, sourceDB, targetDB);
- DLog(@"Copying table: %@", copyStatement);
- [connection queryString:copyStatement];
- */
+ if ([[createTableStatement substringToIndex:12] isEqualToString:@"CREATE TABLE"]) {
+ // adding the target DB name and the separator dot after "CREATE TABLE ".
+ [createTableStatement insertString:@"." atIndex:13];
+ [createTableStatement insertString:[targetDB backtickQuotedString] atIndex:13];
- [connection queryString:createTableStatement];
- [createTableStatement release];
+ [connection queryString:createTableStatement];
+ [createTableStatement release];
- if ([connection queryErrored]) {
- SPBeginAlertSheet(NSLocalizedString(@"Failed to copy table", @"copy table error message"),
- NSLocalizedString(@"OK", @"OK button"), nil, nil, messageWindow, self, nil, nil,
- [NSString stringWithFormat:NSLocalizedString(@"An error occured while trying to copy a table.\n\nMySQL said: %@",
- @"copy table error informative message"),
- [connection getLastErrorMessage]]);
- return NO;
+ if ([connection queryErrored]) {
+ SPBeginAlertSheet(NSLocalizedString(@"Failed to copy table", @"copy table error message"),
+ NSLocalizedString(@"OK", @"OK button"), nil, nil, messageWindow, self, nil, nil,
+ [NSString stringWithFormat:NSLocalizedString(@"An error occured while trying to copy a table.\n\nMySQL said: %@",
+ @"copy table error informative message"),
+ [connection getLastErrorMessage]]);
+ return NO;
+ }
+ return YES;
+ } else {
+ NSLog(@"Could not copy non-table/view %@", tableName);
}
- return YES;
+ return NO;
}
- (BOOL)copyTable:(NSString *)tableName from: (NSString *)sourceDB to: (NSString *)targetDB withContent:(BOOL)copyWithContent{
@@ -88,7 +81,7 @@
BOOL structureCopyResult = [self copyTable:tableName from:sourceDB to:targetDB];
// optionally copy the table data using an insert select
- if (copyWithContent == YES) {
+ if (structureCopyResult && copyWithContent) {
NSString *copyDataStatement = [NSString stringWithFormat:@"INSERT INTO %@.%@ SELECT * FROM %@.%@",
[targetDB backtickQuotedString],
[tableName backtickQuotedString],
@@ -99,7 +92,7 @@
if ([connection queryErrored]) {
SPBeginAlertSheet(NSLocalizedString(@"Failed to copy table data", @"copy table data error message"),
- NSLocalizedString(@"OK", @"OK button"), nil, nil, [self getTableWindow], self, nil, nil,
+ NSLocalizedString(@"OK", @"OK button"), nil, nil, messageWindow, self, nil, nil,
[NSString stringWithFormat:NSLocalizedString(@"An error occured while trying to copy a table's data.\n\nMySQL said: %@",
@"copy table data error informative message"),
[connection getLastErrorMessage]]);
@@ -126,7 +119,7 @@
if ([connection queryErrored]) {
SPBeginAlertSheet(NSLocalizedString(@"Failed to move table", @"move table error message"),
- NSLocalizedString(@"OK", @"OK button"), nil, nil, [self getTableWindow], self, nil, nil,
+ NSLocalizedString(@"OK", @"OK button"), nil, nil, messageWindow, self, nil, nil,
[NSString stringWithFormat:NSLocalizedString(@"An error occured while trying to move a table.\n\nMySQL said: %@",
@"move table error informative message"),
[connection getLastErrorMessage]]);