当前使用版本(必须填写清楚,否则不予处理)
3.30
该问题是怎么引起的?(最新版上已修复的会直接close掉)
连接达梦数据库调用mapper中的insert方法
重现步骤
连接达梦数据库调用mapper中的insert方法
报错信息
org.springframework.jdbc.BadSqlGrammarException:
Error updating database. Cause: dm.jdbc.driver.DMException: 第 31 行, 第 28 列[]附近出现错误:
语法分析出错
The error may exist in com/ddkj/manager/dao/system/UserMapper.java (best guess)
The error may involve com.ddkj.manager.dao.system.UserMapper.insert
The error occurred while executing an update
SQL: INSERT INTO sys_user ( username, password, nick_name, sex, create_time, is_del ) VALUES ( ?, ?, ?, ?, ?, ? )
Cause: dm.jdbc.driver.DMException: 第 31 行, 第 28 列[]附近出现错误:
语法分析出错 ; bad SQL grammar []; nested exception is dm.jdbc.driver.DMException: 第 31 行, 第 28 列[]附近出现错误: 语法分析出错
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
at com.sun.proxy.$Proxy97.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:60)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:96)
at com.sun.proxy.$Proxy98.insert(Unknown Source)
at com.ddkj.EasywebShiroApplicationTests.contextLoads(EasywebShiroApplicationTests.java:26)
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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:73)
at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:83)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: dm.jdbc.driver.DMException: 第 31 行, 第 28 列[]附近出现错误:
语法分析出错
at dm.jdbc.driver.DBError.throwException(Unknown Source)
at dm.jdbc.c.b.n.R(Unknown Source)
at dm.jdbc.c.b.n.O(Unknown Source)
at dm.jdbc.c.b.n.N(Unknown Source)
at dm.jdbc.c.a.a(Unknown Source)
at dm.jdbc.c.a.a(Unknown Source)
at dm.jdbc.driver.DmdbPreparedStatement.prepareSql(Unknown Source)
at dm.jdbc.driver.DmdbPreparedStatement.
Comment From: miemieYaho
主键没有自增问题,自己排查
Comment From: 645288337
主键自增了。我将mp执行的 INSERT INTO sys_user ( username, password, nick_name, sex, create_time, is_del ) VALUES ( ?, ?, ?, ?, ?, ? ) 语句复制下来自己写mapper.xml文件是可以插入的 `package com.ddkj.manager.model.system;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.ddkj.common.base.BaseEntity;
import java.util.Date; import java.util.List;
/*
*
* 用户表
*
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
@TableId(value = "user_id", type = IdType.AUTO)
private Integer userId;
/**
* 账号
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 昵称
*/
private String nickName;
/**
* 头像
*/
private String avatar;
/**
* 性别
*/
private String sex;
/**
* 手机号
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 邮箱是否验证,0未验证,1已验证
*/
private Integer emailVerified;
/**
* 真实姓名
*/
private String trueName;
/**
* 身份证号
*/
private String idCard;
/**
* 出生日期
*/
private Date birthday;
/**
* 部门id
*/
private Integer departmentId;
/**
* 状态,0正常,1冻结
*/
private Integer state;
@TableField(exist = false)
private List<Role> roles; // 用户的角色列表
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getEmailVerified() {
return emailVerified;
}
public void setEmailVerified(Integer emailVerified) {
this.emailVerified = emailVerified;
}
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Integer getDepartmentId() {
return departmentId;
}
public void setDepartmentId(Integer departmentId) {
this.departmentId = departmentId;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
@Override
public String toString() {
return "User{" +
", userId=" + userId +
", username=" + username +
", password=" + password +
", nickName=" + nickName +
", avatar=" + avatar +
", sex=" + sex +
", phone=" + phone +
", email=" + email +
", emailVerified=" + emailVerified +
", trueName=" + trueName +
", idCard=" + idCard +
", birthday=" + birthday +
", departmentId=" + departmentId +
", state=" + state +
", createTime=" + createTime +
", updateTime=" + updateTime +
"}";
}
} ` 这是我实体类
Comment From: qmdx
@645288337 检测确保数据库表的自增设置打开了,建议使用 mp 生成的唯一主键插入性能上也会更快
Comment From: miemieYaho
那可能驱动不支持主键回写