2013-03-23 56 views
1

SQL查詢:phpMyAdmin的錯誤的SQL語法

CREATE TABLE summertraining.student(

studentID VARCHAR(9) NOT NULL , 
Name VARCHAR(20) NOT NULL , 
KSUEmail VARCHAR(20) NOT NULL , 
PhoneNo VARCHAR(14) NOT NULL , 
coordinatorName VARCHAR(20) NULL , 
supervisorName VARCHAR(20) NULL , 
GPA DOUBLE(4) NOT NULL , 
password VARCHAR(10) NOT NULL , 
registerFlag VARCHAR(7) NOT NULL , 
PRIMARY KEY ( studentID) 
) ENGINE = INNODB; 

MySQL表示:

1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊 'NOT NULL NOT NULL),password VARCHAR(10),registerFlag VARCHAR(7)NOT NULL,' 在1號線強大的文本

回答

0

該錯誤是在行:

GPA DOUBLE(4) NOT NULL , 

需要使用:

GPA DOUBLE NOT NULL , 
+0

,我不認爲這是真的...雙(4)只分配double類型的大小;它應該是有效的SQL – 2013-03-23 13:01:01

+0

謝謝你serg ..最後它的工作,我想我應該把大小x] – Basmah 2013-03-23 13:15:35

+0

我錯了......它不是有效的SQL - 看到我的答案 – 2013-03-23 13:18:23

0

的問題確實是DOUBLE(4)一部分@Serg指出。如果要爲double值指定精度,則至少需要兩個數字來指定精度,而不僅限於一個。從MySQL手冊:

的MySQL允許非標準語法:FLOAT(M,d)或REAL(M,d)或雙精度(M,d)。在這裏,「(M,D)」意思是總共可以存儲多達M位的數值,其中D位可以在小數點後面。例如,定義爲FLOAT(7,4)的列在顯示時看起來像-999.9999。 MySQL在存儲值時執行四捨五入,因此如果將999.00009插入到FLOAT(7,4)列中,則近似結果爲999.0001。

然而,你可能只是想只是DOUBLE堅持,因爲這個語法是具體到MySQL:

爲了獲得最大的可移植性,代碼需要近似數值數據的存儲應使用FLOAT或雙精度與沒有規定精度或數字的數量。

這裏的手冊中的鏈接到相關頁面: http://dev.mysql.com/doc/refman/5.6/en/floating-point-types.html