mysql数据库创建表的时候,出现您的SQL语法有错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库创建表的时候,出现您的SQL语法有错误相关的知识,希望对你有一定的参考价值。

mysql数据库创建表的时候,出现您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的使用near '的语法))“在第8行

类型写的不对吧,你什么数据库呀 sqlserver写法如下 create table Student (学号 char(8), 姓名 char(10), 性别 char(2), 出生日期 datetime, 班级 char(12), 入学成绩 numeric(5,1)) oracle的话 datetime改成date numeric改成number 参考技术A CREAT TABLE `aone1`.`yuan`(
`id` int(30) PRIMARY KEY AUTO_INCREMENT,

`card_number` varchar(20),

...........
)
参考技术B id 勾上主键

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

【中文标题】#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册【英文标题】:#1064 -You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version 【发布时间】:2014-03-14 22:36:14 【问题描述】:

我是 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),
)

我收到以下错误消息:

以获取正确的语法使用 near ') NOT NULL,键入 varchar(6) NOT NULL,注意 varchar(512), 收据 int(10), ' 在第 6 行**

这里有一些关于我正在使用的信息

    服务器类型:MySQL 服务器版本:5.5.32 - MySQL Community Server(GPL) phpMyAdmin:4.0.4.1,最新稳定版本:4.1.7

我花了一天的时间把头撞在墙上,现在我想是时候寻求帮助了。我想知道是否有人能告诉我我做错了什么?

【问题讨论】:

receipt 行的末尾有一个逗号。 【参考方案1】:

去掉逗号

receipt int(10),

还有AUTO INCREMENT应该是一个KEY

double 数据类型还需要小数位精度,因此正确的语法是 double(10,2)

【讨论】:

这个答案部分正确。它没有回答返回的错误消息。 double 数据类型也需要小数位精度,所以正确的语法是 double(10,2)【参考方案2】:

一个明显的事情是你必须在这里删除逗号

receipt int(10),

但实际的问题是因为线

amount double(10) NOT NULL,

改成

amount double NOT NULL,

【讨论】:

这对我有用。为什么我不应该给 double 一个长度? 你问这个问题已经有好几年了,但是对于后代来说,这个工作的原因是你用来给双精度的语法是错误的。您需要以 double(10, 2) 格式给出长度,其中 2 是小数位数。删除长度只是使其使用默认值。【参考方案3】:

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

【讨论】:

【参考方案4】:

我看到两个问题:

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

双(10,8) 总共是十位,小数点后允许有 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) );

【讨论】:

【参考方案5】:

规则 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:不允许使用关键字(具有预定义含义的词)作为字段名称。 这里的 type 就是这样使用的(通常与 Join Types 一起使用)。 所以代码:

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 服务器中尝试它)并确保此代码有效。现在从您的数据库中删除该表并在您的程序中执行代码。 谢谢。

【讨论】:

【参考方案6】:

我以前遇到过这个问题,对我来说背后的原因是如果没有添加额外的列,应该删除架构定义中的最后一个逗号。

CREATE TABLE users 
    (
         id INT AUTO_INCREMENT PRIMARY KEY,
         username VARCHAR(255) NOT NULL,
         email VARCHAR(255) NOT NULL UNIQUE,
         password VARCHAR(255) NOT NULL,    // this comma should be deleted
    );

【讨论】:

以上是关于mysql数据库创建表的时候,出现您的SQL语法有错误的主要内容,如果未能解决你的问题,请参考以下文章

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法

来自另一个表的更新表上的SQL错误

MySQL的SQL语句 - 数据操作语句(13)- 子查询(10)

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

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法解决方案:

mysql 基础sql语法总结