Невозможно разрешить имя таблицы, близкую к

Я хочу создать ссылку на внешнюю таблицу. но я получаю следующую ошибку:

запрос:

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

Эта ошибка также может возникать при разбиении родительской таблицы. Удаление раздела из родительской таблицы позволяет создавать внешние ограничения без каких-либо проблем.