Mysql 使文本列不为null的正确方法是什么
我正在尝试在mysql中创建一个表Mysql 使文本列不为null的正确方法是什么,mysql,sql,Mysql,Sql,我正在尝试在mysql中创建一个表 CREATE TABLE messages ( message_id INT UNSIGNED NOT NULL AUTO_INCREMENT, time_stamp DATETIME NOT NULL, from INT UNSIGNED NOT NULL, to INT UNSIGNED NOT NULL, message_content TEXT NOT NULL, media_id INT, seen BOOLEAN, subject TINYTEXT
CREATE TABLE messages (
message_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
time_stamp DATETIME NOT NULL,
from INT UNSIGNED NOT NULL,
to INT UNSIGNED NOT NULL,
message_content TEXT NOT NULL,
media_id INT,
seen BOOLEAN,
subject TINYTEXT NOT NULL,
PRIMARY KEY (message_id),
FOREIGN KEY (from) REFERENCES user (user_id),
FOREIGN KEY (to) REFERENCES user (user_id),
FOREIGN KEY (media_id) REFERENCES digital_media (media_id),
INDEX (time_stamp, from, to, seen));
但我收到了错误信息
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from INT UNSIGNED NOT NULL,
to INT UNSIGNED NOT NULL,
message_content TEXT NOT N' at line 4
我不知道这个错误消息是什么意思,我不明白为什么语法是错误的
to
和from
是列的糟糕名称,因为它们是SQL关键字
我认为这会奏效:
CREATE TABLE messages (
message_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
time_stamp DATETIME NOT NULL,
from_user_id INT UNSIGNED NOT NULL,
to_user_id INT UNSIGNED NOT NULL,
message_content TEXT NOT NULL,
media_id INT,
seen BOOLEAN,
subject TINYTEXT NOT NULL,
PRIMARY KEY (message_id),
FOREIGN KEY (from_user) REFERENCES user (user_id),
FOREIGN KEY (to_user) REFERENCES user (user_id),
FOREIGN KEY (media_id) REFERENCES digital_media (media_id),
INDEX (time_stamp, from_user, to_user, seen)
);
没有外键限制。哈哈,我一发布问题就意识到了这一点,因为stackoverflow中的语法突出显示,谢谢。不过,如果错误消息提到这一点,可能会有所帮助。