19

外部テーブルへの参照を作成したい。しかし、私は次のエラーが発生しています:

クエリ:

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)
4

3 に答える 3

47

InnoDB のみが外部キーをサポートし、MyISAM はサポートしません。できたとしても、異なるタイプのテーブル間にリレーションを作成することはできません。

postしたがって、テーブルを InnoDBに変換する必要があります。ALTER TABLE post ENGINE = InnoDB;

于 2013-08-22T21:39:50.800 に答える
0

私にとってはこれで動作します。

CREATE TABLE category_ids (id INT, post_id INT references post(id),
                INDEX par_ind (post_id)
) ENGINE=INNODB;
于 2015-05-18T15:27:16.513 に答える