Хорошо, поэтому я создаю таблицы в MySQL с индексами и внешними ключами. Я использую MySQL Workbench для создания таблиц, а затем заставляю его напрямую разрабатывать сценарий создания SQL (я лучше работаю в среде визуальных БД, чем просто пишу код SQL вручную).
Проблема много раз, когда я импортирую скрипт sql в mysql, я получаю классический eror:
#1005 - Can't create table 'db.tablename' (errno: 121)
Мне удавалось каждый раз выяснять проблему, обычно связанную с индексом / внешним ключом, но теперь меня начинает раздражать необходимость каждый раз исправлять ее. Я не очень понимаю, в чем проблема (особенно, когда продукт MySQL создает SQL-код для своей собственной базы данных). Ниже приведен код, который обычно вызывает проблему.
CREATE TABLE IF NOT EXISTS `db`.`groupMembers` (
`groupMembersID` INT NOT NULL AUTO_INCREMENT ,
`groupID` INT NOT NULL ,
`userID` INT NULL ,
PRIMARY KEY (`groupMembersID`) ,
INDEX `group` (`groupID` ASC) ,
INDEX `user` (`userID` ASC) ,
CONSTRAINT `group`
FOREIGN KEY (`groupID` )
REFERENCES `db`.`groups` (`groupsID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `user`
FOREIGN KEY (`userID` )
REFERENCES `db`.`users` (`usersID` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Ошибка обычно исходит из первого определения INDEX - даже когда я вынимаю определение индекса, я просто получаю ошибку при первом определении ограничения внешнего ключа. Я проверил, и удаленный столбец внешнего ключа и локальный столбец имеют одинаковый тип данных и размер.