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.