转自:http://my.oschina.net/myspaceNUAA/blog/121400
项目使用hibernate操作数据库,但是今天Tomcat启动的时候一直报错,
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前的那个键。
修改表字段长度: