Mysql表名使用authorization引发的惨案
复现
使用Mybatis Plus执行更新语句时
public AjaxResult delete(@PathVariable String key) {
key = key.replace(RequestConstants.PREFIX, "");
boolean update = authorizationService.lambdaUpdate()
.eq(Authorization::getAuthKey, key)
.eq(Authorization::getUserId, getUserId())
.set(Authorization::getStatus, 2)
.update();
return toAjax(update);
}
控制台出现报错
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: UPDATE authorization SET key_status=?
WHERE (auth_key = ? AND user_id = ?)
### The error may exist in com/ruoyi/system/mapper/AuthorizationMapper.java (best guess)
### The error may involve com.ruoyi.system.mapper.AuthorizationMapper.update
### The error occurred while executing an update
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: UPDATE authorization SET key_status=?
WHERE (auth_key = ? AND user_id = ?)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
### Error updating database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: UPDATE authorization SET key_status=?
WHERE (auth_key = ? AND user_id = ?)
### The error may exist in com/ruoyi/system/mapper/AuthorizationMapper.java (best guess)
### The error may involve com.ruoyi.system.mapper.AuthorizationMapper.update
### The error occurred while executing an update
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: UPDATE authorization SET key_status=?
WHERE (auth_key = ? AND user_id = ?)
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:196)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
... 142 common frames omitted
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: UPDATE authorization SET key_status=?
WHERE (auth_key = ? AND user_id = ?)
Caused by: net.sf.jsqlparser.JSQLParserException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "authorization" "AUTHORIZATION"
at line 1, column 8.
Was expecting one of:
提示消息遇到意外标记:"authorization" "AUTHORIZATION
解决
将表名更改
authorization
改为 agent_authorization
Mybatis plus的@TableName
@TableName(value ="agent_authorization")
@Data
public class Authorization implements Serializable {
...
}
问题修复
我滴妈呀, 再也不敢只用一个单词建表了