我试图制作" in_reply_to" Post表中的一个可空外键,指向同一个表上的id字段。基本上如果这个字段为空,那么帖子不是对另一个帖子的回复 - 如果它是非空的那么 post是对具有匹配id的帖子的回复,如果这有意义的话。但是当我通过mysql运行我的文件时,我得到以下错误。
错误1064(42000):您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便在'(160)附近使用正确的语法 , FOREIGN KEY(userID)REFERENCES用户(userID), FOREIGN KEY(in_reply _'第6行 查询正常,0行受影响(0.36秒)
所以它说我写的命令有问题,但我无法确定我做错了什么。
这是sql文件的内容
CREATE DATABASE siteData CHARACTER SET utf8 COLLATE utf8_general_ci;
USE siteData;
CREATE TABLE users (
userID INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(40),
email VARCHAR(40),
password VARCHAR(125)
);
CREATE TABLE post (
postID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
userID INT,
post_date TIMESTAMP(6),
in_reply_to INT NOT NULL,
postContent(160),
FOREIGN KEY (userID) REFERENCES users(userID),
FOREIGN KEY (in_reply_to) REFERENCES post(postID)
);
CREATE TABLE follow (
userID INT,
followerID INT,
PRIMARY KEY (userID,followerID),
FOREIGN KEY (userID)
REFERENCES users(userID),
FOREIGN KEY (followerID)
REFERENCES users(userID)
);
所以如果你有关于如何引用帖子的id的任何指示,我将不胜感激。
答案 0 :(得分:1)
问题不在于外键。您尚未声明列2^i*T(n/n) - c(1 - 2^i)
= (2^lg n * c) - c(1 - 2^lg n)
= (2^lg n * c) - c + (c * 2^lg n)
= 2cn - c
的类型。
请更改
postContent
到例如。
postContent(160),
如果您希望列postContent varchar(160),
可以为空,请更改
in_reply_to
到
in_reply_to INT NOT NULL,
答案 1 :(得分:1)
Post Table中缺少字段postContent的数据类型。但这不是使外键为null的正确方法。仍然有一个技巧可以做到这一点。您可以查看以下链接。