我想创建对外部表的引用。但我收到以下错误:
询问:
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 STATUS \ 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)
只有InnoDB支持外键,而MyISAM不支持。即使可以,您也无法在不同类型的表之间创建关系。
因此,您需要将表post转换为InnoDB。ALTER TABLE post ENGINE = InnoDB;
post
ALTER TABLE post ENGINE = InnoDB;