Я создал таблицу по сценарию:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
DROP TABLE IF EXISTS `Table1`;
CREATE TABLE IF NOT EXISTS `Table1` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`parentId` bigint(20) DEFAULT NULL,
`name` varchar(1024) NOT NULL,
`description` varchar(16384) NOT NULL DEFAULT '',
`imageId` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`(255)),
KEY `parentId` (`parentId`),
KEY `imageId` (`imageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;
INSERT INTO `Table1` (`id`, `parentId`, `name`, `description`, `imageId`) VALUES
(0, NULL, 'name1', '', NULL),
(12, 0, 'name2', '', NULL);
Затем я пытаюсь добавить внешний ключ:
ALTER TABLE `Table1`
ADD CONSTRAINT `Table1_ibfk_2`
FOREIGN KEY (`parentId`) REFERENCES `Table1` (`id`);
И получите следующую ошибку:
ERROR 1005 (HY000): Can't create table 'sandbox.#sql-c28_4c' (errno: 150)
Что не так?
Я бегу
SHOW ENGINE INNODB STATUS;
Далее следует ОШИБКА ИНОСТРАННЫХ КЛЮЧЕЙ:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
110504 22:06:55 Error in foreign key constraint of table sandbox/#sql-c28_61:
FOREIGN KEY (`parentId`) REFERENCES `Table1` (`id`):
Cannot resolve table name close to:
(`id`)
------------
Но это не помогает мне понять, что не так.
Я использую Windows Vista, MySql 5.5.11
UPDATE:
Эта проблема появляется при обновлении с MySql 5.0.67.