我是PHP
和MySQL
的新手,在我正在开展的学习项目上遇到了一些麻烦。
每当我尝试创建一个表
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行**
以下是我正在使用
的一些信息我花了一天时间把头靠在墙上,现在我觉得是时候寻求帮助。我想知道是否有人可以告诉我我做错了什么?
答案 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 。