Mysql 错误,关键字

工作中遇到个问题,分析后发现是使用关键字造成的,正好跟大家分享下。
在给某个对象添加了一个字段,其中数据库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 的方法,就会导致莫名其妙的问题。
 
所以这些地方要多注意。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值