我正在努力在数据库上构建新的东西,这些东西已经由其他人构建并且几乎没有文档。我需要添加一个新表,其中包含对已经存在的表的多对多引用。
以下是已经存在的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 来帮助我创建多对多的参考表。Tag 表是 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)
我认为我应该添加的级联动作有一些删除。我添加了一些并通过反复试验进行了尝试,但它们都不起作用。有没有办法在创建外键引用时找到我应该使用的删除级联操作?有没有像 dec table_name 这样的命令可以显示这些操作?我尝试过 delete no action 和 delete set null 等,但我不想盲目地通过反复试验来做某事,尤其是在处理表之间的关系时。谁能帮我?非常感谢。