#1064 - 你的SQL语法有错误;查看与MySQL服务器版本对应的手册

时间:2014-02-15 13:54:58

标签: mysql error-handling create-table

我是PHPMySQL的新手,在我正在开展的学习项目上遇到了一些麻烦。

每当我尝试创建一个表

CREATE TABLE transactions(
id int NOT NULL AUTO_INCREMENT,
location varchar(50) NOT NULL,
description varchar(50) NOT NULL,
category varchar(50) NOT NULL,
amount double(10) NOT NULL,
type varchar(6) NOT NULL, 
notes varchar(512),
receipt int(10),
)

我收到以下错误消息:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   ')NOT NULL,输入varchar(6)NOT NULL,notes varchar(512),   收据int(10),'第6行**

以下是我正在使用

的一些信息
  1. 服务器类型:MySQL
  2. 服务器版本:5.5.32 - MySQL社区服务器(GPL)
  3. phpMyAdmin:4.0.4.1,最新稳定版本:4.1.7
  4. 我花了一天时间把头靠在墙上,现在我觉得是时候寻求帮助。我想知道是否有人可以告诉我我做错了什么?

6 个答案:

答案 0 :(得分:10)

删除逗号

receipt int(10),

AUTO INCREMENT也应该是 KEY

double数据类型也需要小数位的精度,所以正确的语法是double(10,2)

答案 1 :(得分:5)

一个显而易见的事情是你必须删除这里的逗号

receipt int(10),

但实际问题是由于行

amount double(10) NOT NULL,

将其更改为

amount double NOT NULL,

答案 2 :(得分:1)

在MySQL中,单词' type'是一个保留字。

答案 3 :(得分:0)

我看到两个问题:

DOUBLE(10)精度定义需要总位数,以及小数点后的总位数:

DOUBLE(10,8) 将使总数为10位,小数点后允许8位数。

此外,您需要将id列指定为键:

CREATE TABLE transactions( 
id int NOT NULL AUTO_INCREMENT, 
location varchar(50) NOT NULL, 
description varchar(50) NOT NULL, 
category varchar(50) NOT NULL, 
amount double(10,9) NOT NULL, 
type varchar(6) NOT NULL,  
notes varchar(512), 
receipt int(10), 
PRIMARY KEY(id) );

答案 4 :(得分:0)

规则1:如果不指定primary key约束,则无法添加新表[如果以某种方式创建它,则不是一个好习惯]。 所以代码:

CREATE TABLE transactions( 
id int NOT NULL AUTO_INCREMENT, 
location varchar(50) NOT NULL, 
description varchar(50) NOT NULL, 
category varchar(50) NOT NULL, 
amount double(10,9) NOT NULL, 
type varchar(6) NOT NULL,  
notes varchar(512), 
receipt int(10), 
PRIMARY KEY(id));

规则2:不允许您使用关键字(具有预定义的词语)作为字段名称。 这里使用类型(通常与加入类型一起使用)。 所以代码:

CREATE TABLE transactions( 
id int NOT NULL AUTO_INCREMENT, 
location varchar(50) NOT NULL, 
description varchar(50) NOT NULL, 
category varchar(50) NOT NULL, 
amount double(10,9) NOT NULL, 
transaction_type varchar(6) NOT NULL,  
notes varchar(512), 
receipt int(10), 
PRIMARY KEY(id));

现在请尝试使用此代码。 首先在您的数据库用户界面中检查它(我正在运行HeidiSQL,或者您也可以在您的xampp / wamp服务器中尝试它)并确保此代码有效。现在从数据库中删除表并执行程序中的代码。 谢谢。

答案 5 :(得分:0)

对于存储例程,您可能已经忘记正确使用 DELIMITER