2013-03-23 38 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