私は、他の誰かによってすでに構築されており、ドキュメントがほとんどないデータベース上に新しいものを構築することに取り組んでいます。既存のテーブルへの多対多の参照を含む新しいテーブルを追加する必要があります。
以下は、既存のwp_postsのテーブルです。
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_author | bigint(20) unsigned | NO | MUL | 0 | |
| post_date | datetime | NO | | 0000-00-00 00:00:00 | |
| guid | varchar(255) | NO | | | |
| menu_order | int(11) | NO | | 0 | |
| post_type | varchar(20) | NO | MUL | post | |
| post_mime_type | varchar(100) | NO | | | |
| comment_count | bigint(20) | NO | | 0 | |
| legacy_id | int(11) | YES | | NULL | |
+-----------------------+---------------------+------+-----+---------------------+----------------+
多対多の参照テーブルに役立つテーブルタグとtag_posts_referenceを作成する必要があります。タグテーブルはwp_tagsです:
+-------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| tag | varchar(255) | YES | | NULL | |
+-------+---------------------+------+-----+---------+----------------+
テーブルwp_tags_postsの作成に問題があります。それは私に次のエラーを与えています:
mysql> create table wp_posts_tags( id bigint(20) unsigned auto_increment,
post_id bigint(20) unsigned not null,
tag_id bigint(20) unsigned not null,
primary key(id), index(post_id),
foreign key(post_id) references wp_posts(id) on Update cascade on delete restrict,
index(tag_id),
foreign key(tag_id) references wp_tags(id))
ENGINE = INNODB;
ERROR 1005 (HY000): Can't create table 'openexhibits_dev.wp_posts_tags' (errno: 150)
追加することになっているカスケードアクションにいくつかの削除があると思います。いくつか追加して試行錯誤しましたが、どれも機能しません。外部キー参照の作成中に使用することになっているカスケード削除アクションを見つける方法はありますか?それらのアクションを表示できるdectable_nameのようなコマンドはありますか?削除アクションなしや削除セットnullなどを試してみましたが、特にテーブル間の関係を扱っている間は、試行錯誤しながらやみくもにやりたくありません。誰か助けてもらえますか?どうもありがとうございます。