您的位置:首页 > 数据库 > MySQL

关于MySQL desc关键字误用为自定义属性引发的错误

2017-03-27 16:18 218 查看
项目使用hibernate操作数据库,但是今天Tomcat启动的时候一直报错, 

view
source

print?

1
报错信息:
2
报错的SQL语句:
3
[Unsuccessful 
schema
 
statement: 
create
 
table
 
***
(***, 
desc
 
varchar
(255),
endDate datetime, *****]
4
 
5
 
6
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have an error 
in
 
your
SQL syntax; 
check
 
the
manual that corresponds 
to
 
your
MySQL server version 
for
 
the 
right
 
syntax 
to
 
use
near 
'desc
varchar(255), '
 
at
 
line
1
注:***为被我省略的字段信息描述

解决方法:既然说是SQL语句有问题,但是想一个简单的SQL CREATE TABLE语句能有什么错误呢。

一个字段一个字段往里面加,进行增量测试。其他字段都没有问题,发现desc varchar(255)有问题。

为什么呢,把desc改成description居然就没有问题,就想到desc会不会是关键字什么的。果然是,

desc是用于排序的关键字,平时编程习惯用desc来作为“描述”字段,直接通过hibernate将属性映射

为数据库字段,就处问题了。

引以为戒,千万不能把关键字作为自己的属性进行操作!

最好的解决方法是不用desc表示字段名,用全称description代替。

另外一种解决方法是在desc外面加反引号(`),注意desc外面加的不是单引号,而是键盘左上角数字键1前的那个键。

修改表字段长度:

[sql] view
plain copy

 





alter table apply_order modify column `desc` varchar(1000) not null;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql
相关文章推荐