这个创建表中的错误在哪里?

时间:2013-12-29 18:18:36

标签: mysql sql

这是决赛桌,但仍然是错误的:(

CREATE TABLE messages (
   message_id   INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
   parent_id    INTEGER UNSIGNED   NOT NULL,
   forum_id     TINYINT UNSIGNED NOT NULL,
   user_id      MEDIUMINT UNSIGNED NOT NULL,
   subject      VARCHAR(100)     NOT NULL,
   body         LONGTEXT         NOT NULL,
   date_entered TIMESTAMP        NOT NULL, 
   PRIMARY KEY (message_id),
   FOREIGN KEY forum_id REFERENCES forums,
   FOREIGN KEY parent_id REFERENCES messages,
   FOREIGN KEY user_id REFERENCES users
);

现在的错误是我无法将parent_id设置为FOREIGN KEY(这是因为如果有人回复帖子,则此帖子被设置为新回复的parent_id)。

由于

1 个答案:

答案 0 :(得分:3)

CREATE TABLE messages 
(
   message_id   INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
   parent_id    INTEGER UNIQUE   NOT NULL,
   forum_id     TINYINT UNSIGNED NOT NULL,
   user_id      MEDIUMINT UNIQUE NOT NULL,
   subject      VARCHAR(100)     NOT NULL,
   body         LONGTEXT         NOT NULL,
   date_entered TIMESTAMP        NOT NULL, 
   PRIMARY KEY (message_id)
);

主键已经是唯一索引。并将类型定义保持在一起:

 INTEGER UNIQUE UNSIGNED 

不是关键字的正确顺序。

通常,您可以在单词near之后的MySQL错误消息中找到查询中有问题的部分。