Mysql 错误,关键字

来源:互联网 发布:淘宝一天刷3单会被限号 编辑:程序博客网 时间:2024/05/12 10:13
工作中遇到个问题,分析后发现是使用关键字造成的,正好跟大家分享下。
在给某个对象添加了一个字段,其中数据库column 对应的名称是 ‘change’, 然后在添加对象的时候就会报:
 
 the manual that corresponds to your MySQL server version for the right syntax to use near 'change, ra) values ('321', '2012-01-06 10:51:48', 10.00, 11.00, 0, 0, 0, 0, 0, 1' at line 1 
 
这样的错误。
 
注意这儿 change 是mysql 的关键字哦, 我们经常用 alter table xxx change column 的change 哦。
 
由于使用了关键字,自然报错。
 
为什么我们在mysql 添加字段的时候不会报错呢。 那是因为我们在写sql 语句的时候,会在字段上面加反引号:
 
alter table running_account_order_item modify `pn` varchar(50) NOT NULL default '';  
 
mysql 反引号的引入是用于历史原因造成的。 所以如果一条sql 语句 在不加反引号能运行成功,才是好的sql语句。
 
这样mysql 就不会把它当作关键字了,但是hibernate 在generate sql 的时候,并不会在sql 语句上面的字段 加上反引号。所以就会出问题。 hibernate 为什么不引入反引号呢,那是因为hibernate 不是完全是为了mysql 而设计的,其他的数据库就没有这种问题。
 
 
还有个问题,在java swing 的开发中,发现大家还经常出现这样的问题,在一个JPanel 中,不自觉就写如下方法:
 
getParent (), getLocation ()。
 
而这些方法本身又是Swing 组件有的方法,就相当于重写了Swing 的方法,就会导致莫名其妙的问题。
 
所以这些地方要多注意。
原创粉丝点击