2012-01-02 89 views
1

我有一个名为MySQL表创建错误

MEMBER两个表 - 列ID(主键),姓名,电子邮件 &

话题 - 列ID,topic_type,CREATED_BY

我想创建它映射成员的主题,其中有列的新表MEMBER_TO_TOPICS MEMBERIDtopicid话题表ID的外键)(成员表ID的外键) created_time
这是我试图执行的查询。

CREATE TABLE `gsraisin`.`member_to_topics` (
`member_id` VARCHAR(50) NOT NULL, 
`topic_id` VARCHAR(50) NOT NULL, 
`created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
PRIMARY KEY (`member_id`, `topic_id`), 
CONSTRAINT `FK_member_to_topics_memberid` FOREIGN KEY `FK_member_to_topics_memberid` 
(`member_id`) 
REFERENCES `member` (`id`) 
ON DELETE CASCADE 
ON UPDATE NO ACTION, 
CONSTRAINT `FK_member_to_topics_topicid` FOREIGN KEY `FK_member_to_topics_topicid` 
(`topic_id`) 
REFERENCES `topics` (`id`) 
ON DELETE CASCADE 
ON UPDATE NO ACTION 
) 
ENGINE = InnoDB; 

但在执行了以下错误 - MYSQL错误号1005不能创建表member_to_topics(错误:121)

回答

1

我想这是我的本地计算机上,它工作得很好。

mysql> show create table member; 
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                              | 
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| member | CREATE TABLE `member` (
    `id` varchar(50) NOT NULL DEFAULT '', 
    `name` varchar(50) DEFAULT NULL, 
    `email` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 


mysql> show create table topics; 
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table | Create Table                                                 | 
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| topics | CREATE TABLE `topics` (
    `id` varchar(50) NOT NULL DEFAULT '', 
    `topic_type` varchar(50) DEFAULT NULL, 
    `created_by` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> show create table member_to_topics; 
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table   | Create Table                                                                                                                                           | 
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| member_to_topics | CREATE TABLE `member_to_topics` (
    `member_id` varchar(50) NOT NULL, 
    `topic_id` varchar(50) NOT NULL, 
    `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`member_id`,`topic_id`), 
    KEY `FK_member_to_topics_topicid` (`topic_id`), 
    CONSTRAINT `FK_member_to_topics_memberid` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION, 
    CONSTRAINT `FK_member_to_topics_topicid` FOREIGN KEY (`topic_id`) REFERENCES `topics` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

错误代码121是用于重复键。

[[email protected] ~]$ perror 121 
OS error code 121: Remote I/O error 
MySQL error code 121: Duplicate key on write or update 

我怀疑你可能有一个重复的约束名称?

+0

thanx您的回复matthew,更改约束名称为我工作。约束名称可以是任何名称或特定的列名称类型关闭? – 2012-01-02 06:37:01