SQL 语法 DATATIME 选项中的错误
Posted
技术标签:
【中文标题】SQL 语法 DATATIME 选项中的错误【英文标题】:Error in SQL syntax DATATIME option 【发布时间】:2014-06-26 11:09:26 【问题描述】:我开始编写一个新的 php 脚本,并且我第一次使用了 mysql 中的 DATATIME 选项。我认为这是问题所在。
我的sql表是:
id int(6) auto_increment,
name varchar(40) not null,
pseudo varchar(40) not null,
email varchar(40) not null,
password varchar(40) not null,
plan varchar(40) not null,
date DATETIME DEFAULT CURRENT_TIMESTAMP,
points int(6) not null,
primary key(id,name,pseudo,email,password,date,points,plan)
当我尝试执行这个查询时:
insert into users(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");
显示此错误:
ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在 'NULL 附近使用的语法, "name","pseudo","email@email.com","Pass1919",NULL,"100")' 在第 1 行
【问题讨论】:
为什么你有这么大的复合键主key(id,name,pseudo,email,password,date,points,plan)
dev.mysql.com/doc/refman/5.5/en/insert.html
【参考方案1】:
试试这个..
insert into users(name,pseudo,email,password,paln,date,poits)
values("name","pseudo","email@email.com","Pass1919",NULL, "100");
【讨论】:
【参考方案2】:正如其他人所说,并且
insert into users(name,pseudo,email,password,paln,date,poits)
values("name","pseudo","email@email.com","Pass1919",'', NULL, "100");
计划 varchar(40) 不为空,
他们错过的是计划不是空的,要么输入空作为日期,要么我宁愿完全省略它。
insert into users(name,pseudo,email,password,paln,poits)
values("name","pseudo","email@email.com","Pass1919",'', "100");
如果您计算上述某些响应中的字段和输入,它们不相等。字段列表在插入中是可选的,但我会使用它们,以提高可读性并确保输入的顺序和数量正确。
最后一件事是更改主键,仅更改自动增量字段,如果您需要其他复合索引,您应该单独添加它们并根据您的要求使其唯一。主键应该是代理键,以这种方式定义
该值在系统范围内是唯一的,因此从不重复使用 该值是系统生成的 用户或应用程序无法操作该值 该值不包含语义含义 该值对用户或应用程序不可见 该值不是由来自不同域的多个值组成。其他键应该与数据相关,就像我说的,如果您需要复合唯一键,或者只是像电子邮件这样的唯一字段,请将其与主键分开。
【讨论】:
非常感谢..我很久没有使用mysql了..感谢提醒:))) (y)【参考方案3】:你必须使用关键字值:
insert into users values(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");
【讨论】:
【参考方案4】:不要将第一个参数作为NULL
传递,因为您已经将它指定为主键并且还自动递增。
用这个
insert into users values("name","pseudo","email@email.com","Pass1919",NULL, "100");
【讨论】:
【参考方案5】:试试这个
INSERT INTO users(
`name`,
`pseudo`,
`email`,
`password`,
`plan`,
`points`
)
VALUES (
NULL,
'name',
'pseudo',
'email@email.com',
'Pass1919',
NULL,
'100');
【讨论】:
@user3779014 如果有帮助,请不要忘记接受/投票【参考方案6】:尝试使用values
关键字添加要插入值的表字段名称。如果您不想发送 id, date
,自动增量 ID 也不能是 NULL
values 离开它都会自动收集带有增量和当前时间戳的值
insert into users(name,pseudo,email,password,plan,points) values ('name','pseudo','email@email.com','Pass1919','','100');
【讨论】:
【参考方案7】:此外,当您处理整数时,插入时不需要将其括在引号中,因此您可以这样做
insert into users(name,pseudo,email,password,plan,date,points)
values("name","pseudo","joe.bloggs@mydomain.com","S3CuR3", "PLAN", "2014-06-26", 100);
【讨论】:
以上是关于SQL 语法 DATATIME 选项中的错误的主要内容,如果未能解决你的问题,请参考以下文章
在JAVA中怎么获取mysql表中的mediumtext类型和datatime类型的字段并显示在控制台上?
数据库Datatime类型的数据,怎样只修改日期,时间保持不变,SQL怎么写