2016-03-27 33 views
0

Aşağıdaki mysql kodunun sözdiziminin belge başına doğru olduğunu düşünmeme rağmen, SQLFiddle bir hata ortaya çıkarır ve hataya neden olan satırın sözdiziminin doğru olduğunu düşündüğümden, ne olduğunu bilmiyorum değişmek.sqlfiddle içindeki MySQL sözdizimi hatası

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

Eğer SQL sözdizimi bir hata var; yakın kullanma hakkı sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu 'sysdate() NOT NULL, updated_on DATETIME (6), is_active CHAR (1) VARSAYILAN '1' hattı 14

de Lütfen bu sorunu çözmeme yardımcı olun.

+2

Sorunuz SQL Fiddle bir bağlantı olmalıdır. –

+0

@GordonLinoff bunu ilk başta denedim. Bağlantıyı kendim tıkladığımda, orada bulduğum kod, önceki tablonunkiydi. – Mickey

+0

Geçersiz bir şema ile keman bağlantısı oluşturamazsınız. Bunu kullanın: http://sqlfiddle.com/#!9/21b6e/1 –

cevap

0

documentation'de açıklandığı gibi, CURRENT_TIMESTAMP eşanlamlılarının varsayılan değer için izin verilir. SYSDATE() böyle bir eşanlamlı değildir. NOW() (veya diğer birçok yapı) kullanabilirsiniz.

Yani, o sütun için doğru sözdizimi şöyledir:

created_on DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
+0

Aslında, NOW() veya başka bir zaman işlevini current_timestamp kullanmadan varsayılan olarak kullanabileceğinizi sanmıyorum. ŞİMDİ() – sagi

+0

değerini elle girin. Evet ... DEFAULT CURRENT_TIMESTAMP öğesini veya bu coulmn – Naruto

+1

NOW() için zorla ekleme değerini kullanın. http://sqlfiddle.com/#!9/eb0a28/1 –