Задавайте вопросы, мы ответим
Вы не зашли.
Таблица group со структурой: id, name, parent
При попытке связать поле parent c id
ALTER TABLE `tdb_group`
ADD CONSTRAINT `key_group_parent` FOREIGN KEY ( `parent` )
REFERENCES `tdb_group` (`id`)
ON DELETE CASCADE ON UPDATE RESTRICT
(1005: Can't create table 'dbmantest.#sql-968_b' (errno: 150))
Комментарий модератора:
Все возможные причины возникновения ошибок внешних ключей рассмотрены в статье:
Ошибки внешних ключей: errno 150, MySQL error 1005 и другие
Неактивен
$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed
Попробовал воспроизвести, ошибки нет:
Неактивен
rgbeast написал:
$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed
Попробовал воспроизвести, ошибки нет:
mysql> CREATE TABLE `tdb_group` (id int PRIMARY KEY, parent int);
Query OK, 0 rows affected (0.62 sec)
mysql> ALTER TABLE `tdb_group`
-> ADD CONSTRAINT `key_group_parent` FOREIGN KEY ( `parent` )
-> REFERENCES `tdb_group` (`id`)
-> ON DELETE CASCADE ON UPDATE RESTRICT;
Query OK, 0 rows affected (1.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
У Вас есть индекс на id?
Вроде есть.
Неактивен
Покажите
Неактивен
vasya написал:
Покажите
SHOW CREATE TABLE `tdb_group`;
CREATE TABLE `tdb_group` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`parent` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `parent` (`parent`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
Неактивен
типы id и parent должны совпадать, а у вас bigint(20) и int(11)
нужно или у id сделать int(11)
или
у parent bigint(20)
Неактивен
vasya написал:
типы id и parent должны совпадать, а у вас bigint(20) и int(11)
нужно или у id сделать int(11)
или
у parent bigint(20)
ok спасибо
Неактивен