2016-03-27 3 views
0

Хотя я думаю, что синтаксис следующего кода mysql верен в соответствии с документацией, SQLFiddle вызывает ошибку, и, поскольку я думаю, что синтаксис строки, которая генерирует ошибку, верна, я не знаю, что изменить.Ошибка синтаксиса MySQL в sqlfiddle

CREATE TABLE students 
(
student_id DECIMAL(38) NOT NULL, 
username VARCHAR(30), 
email VARCHAR(80), 
password VARCHAR(30), 
f_name VARCHAR(30), 
l_name VARCHAR(30), 
bio VARCHAR(350), 
dp VARCHAR(15), 
is_suspended CHAR(1) DEFAULT '0' NOT NULL, 
suspension_reason VARCHAR(150), 
role_id DECIMAL(38) NOT NULL, 
created_on DATETIME(6) DEFAULT SYSDATE() NOT NULL, 
updated_on DATETIME(6), 
is_active CHAR(1) DEFAULT '1' NOT NULL, 
city VARCHAR(15) NOT NULL, 
state VARCHAR(15) NOT NULL, 
zip VARCHAR(6) NOT NULL, 
b_day DATETIME, 
CONSTRAINT students_id_pk PRIMARY KEY(student_id), 
CONSTRAINT students_role_id_fk FOREIGN KEY(role_id) REFERENCES user_role(role_id), 
CONSTRAINT students_username_uq UNIQUE(username), 
CONSTRAINT students_email_uq UNIQUE(email) 
); 

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи «SYSDATE() NOT NULL, updated_on DATETIME (6), is_active CHAR (1) DEFAULT '1' в строке 14

Пожалуйста, помогите мне решить эту проблему.

+2

Вы должны иметь ссылку на SQL Fiddle в вашем вопросе. –

+0

@ GordonLinoff Я попробовал это сначала. когда я нажал на ссылку сам, код, который я нашел, был в предыдущей таблице. – Mickey

+0

Вы не можете создать ссылку на скрипт с неверной схемой. Используйте этот: http://sqlfiddle.com/#!9/21b6e/1 –

ответ

0

Как объясняется в documentation, для значения по умолчанию допускаются синонимы для CURRENT_TIMESTAMP. SYSDATE() не является таким синонимом. Вы можете использовать NOW() (или несколько других конструкций).

Таким образом, правильный синтаксис для этого столбца:

created_on DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+0

На самом деле, я не думаю, что вы можете использовать NOW() или любые другие функции времени по умолчанию, не используя current_timestamp, он будет вынужден вставлять/обновлять вручную значение СЕЙЧАС() – sagi

+0

да .... Либо используйте значение DEFAULT CURRENT_TIMESTAMP, либо значение силы вставки для этого coummn – Naruto

+1

СЕЙЧАС() работает отлично. http://sqlfiddle.com/#!9/eb0a28/1 –

Смежные вопросы