Невозможно разрешить имя таблицы, близкую к
Я хочу создать ссылку на внешнюю таблицу. но я получаю следующую ошибку:
запрос:
CREATE TABLE category_ids (id INT, post_id INT,
INDEX par_ind (post_id),
FOREIGN KEY (post_id) REFERENCES post(id)
ON DELETE CASCADE
) ENGINE=INNODB;
ПОКАЖИТЕ СТАНДАРТ INNODB ДВИГАТЕЛЯ \G:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2013-08-23 00:11:06 7f6f49e7b700 Error in foreign key constraint of table fun/category_ids:
FOREIGN KEY (post_id) REFERENCES post(id)
ON DELETE CASCADE
) ENGINE=INNODB:
Cannot resolve table name close to:
(id)
ON DELETE CASCADE
) ENGINE=INNODB
структура столбцов столбцов
mysql> describe post;
+-------------+-----------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-----------------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
...
+-------------+-----------------------+------+-----+---------------------+----------------+
22 rows in set (0.00 sec)
Ответы
Ответ 1
Только InnoDB поддерживает внешние ключи, MyISAM этого не делает.
Даже если бы это было так, вы не можете создавать отношения между таблицами разного типа.
Поэтому вам нужно преобразовать таблицу post
в InnoDB. ALTER TABLE post ENGINE = InnoDB;
Ответ 2
Для меня это работает.
CREATE TABLE category_ids (id INT, post_id INT references post(id),
INDEX par_ind (post_id)
) ENGINE=INNODB;
Ответ 3
Эта ошибка также может возникать при разбиении родительской таблицы. Удаление раздела из родительской таблицы позволяет создавать внешние ограничения без каких-либо проблем.