Description:
Changing a table name and a FK name, then clicking "apply" gives an error. Workbench tries to change the FK name using the old table name.
How to repeat:
1. Execute:
CREATE TABLE `Numbers` (
`Number` TINYINT NOT NULL,
PRIMARY KEY (`Number`)
);
CREATE TABLE `BadTableName` (
`RecordID` INT NOT NULL,
`NumberID` TINYINT NOT NULL,
CONSTRAINT `BadTableName_NumberID`
FOREIGN KEY (`NumberID`)
REFERENCES `Numbers` (`Number`)
ON DELETE CASCADE
ON UPDATE CASCADE,
PRIMARY KEY (`RecordID`)
);
2. Right click "BadTableName", select "Alter Table".
3. Change "Table Name" field to "AmazingTable".
5. Click "Foreign Keys" tab and change "BadTableName_NumberID" to "AmazingTable_NumberID".
5. Click "Apply".
6. It fails ("Operation failed: There was an error while applying the SQL script to the database." and "ERROR 1146: Table 'test.badtablename' doesn't exist").
The SQL generated was :
ALTER TABLE `test`.`badtablename`
DROP FOREIGN KEY `BadTableName_NumberID`;
ALTER TABLE `test`.`badtablename`
RENAME TO `test`.`amazingtable` ;
ALTER TABLE `test`.`badtablename`
ADD CONSTRAINT `AmazingTable_NumberID`
FOREIGN KEY (`NumberID`)
REFERENCES `test`.`numbers` (`Number`)
ON DELETE CASCADE
ON UPDATE CASCADE;
Suggested fix:
take new earlier changes into account when generating later changes.
Description: Changing a table name and a FK name, then clicking "apply" gives an error. Workbench tries to change the FK name using the old table name. How to repeat: 1. Execute: CREATE TABLE `Numbers` ( `Number` TINYINT NOT NULL, PRIMARY KEY (`Number`) ); CREATE TABLE `BadTableName` ( `RecordID` INT NOT NULL, `NumberID` TINYINT NOT NULL, CONSTRAINT `BadTableName_NumberID` FOREIGN KEY (`NumberID`) REFERENCES `Numbers` (`Number`) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (`RecordID`) ); 2. Right click "BadTableName", select "Alter Table". 3. Change "Table Name" field to "AmazingTable". 5. Click "Foreign Keys" tab and change "BadTableName_NumberID" to "AmazingTable_NumberID". 5. Click "Apply". 6. It fails ("Operation failed: There was an error while applying the SQL script to the database." and "ERROR 1146: Table 'test.badtablename' doesn't exist"). The SQL generated was : ALTER TABLE `test`.`badtablename` DROP FOREIGN KEY `BadTableName_NumberID`; ALTER TABLE `test`.`badtablename` RENAME TO `test`.`amazingtable` ; ALTER TABLE `test`.`badtablename` ADD CONSTRAINT `AmazingTable_NumberID` FOREIGN KEY (`NumberID`) REFERENCES `test`.`numbers` (`Number`) ON DELETE CASCADE ON UPDATE CASCADE; Suggested fix: take new earlier changes into account when generating later changes.