Как правильно сделать текстовый столбец не нулевым - PullRequest
3 голосов
/ 29 апреля 2020

Я пытаюсь создать таблицу в 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 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

Я понятия не имею, что означает это сообщение об ошибке Я не понимаю, почему синтаксис неправильный.

1 Ответ

2 голосов
/ 29 апреля 2020

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)
);

Это работает без ограничений внешнего ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...