mysql自动生成的自增ID会是已存在的!

LeoXu1990 2014-08-08 04:44:16
最近项目出了问题,mysql的member表主键是自增的.但是目前表里面自增已经到了1900,按理说下一个数据insert以后id会自动赋值为1901,但是mysql自动赋值为一个有的值.结果报错
org.springframework.dao.DataIntegrityViolationException: Duplicate entry '1803' for key 'PRIMARY'; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Duplicate entry '1803' for key 'PRIMARY'
at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:138)
at org.springframework.orm.hibernate4.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:594)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:476)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:387)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy18.insertMember(Unknown Source)
at com.fitness.action.RegisterAction.execute(RegisterAction.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.fitness.interceptor.AutoLoginInterceptor.intercept(AutoLoginInterceptor.java:79)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1774)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.hibernate.exception.ConstraintViolationException: Duplicate entry '1803' for key 'PRIMARY'
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:74)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at com.sun.proxy.$Proxy30.executeUpdate(Unknown Source)
at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)
......
org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:468)
... 77 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1803' for key 'PRIMARY'
不太清楚这个mysql的问题还是Hibernate的问题.我插入数据是采用的Hibernate的session.save
谢谢大家.很着急!谢谢
...全文
978 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把你的自增长的值,重新设置下,从1920开始...然后再试试
致知Fighting 2014-08-11
  • 打赏
  • 举报
回复
insert into fitness.fitness_member (admin_group_id, email, is_auth, last_login_date, last_login_ip, nickname, password, phone, qq_id, reg_date, sex, username, weibo_id, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 为什么你的sql里有id这个字段,既然是自增就不应该在插入的时候指定id,你这个自增难道是hibernate生成的?那在集群环境下是肯定会出问题的
zgd77521 2014-08-11
  • 打赏
  • 举报
回复
本来hibernate处理sql的时候就有点拖拖拉拉的,是不是hibernate没优化好?处理高并发是个头疼的问题,如果不是的话追一下代码。看看什么情况下会报错,还有xml配置是否正确?
scott_129 2014-08-08
  • 打赏
  • 举报
回复
有可能是hibernate的问题,也有可能是之前,或者是并发的问题。检查一下hibernate的主键生成策略吧
-阿克蒙德- 2014-08-08
  • 打赏
  • 举报
回复
引用 7 楼 xyq418730 的回复:
[quote=引用 5 楼 u012047741 的回复:] 检查下hibernate主键生成策略那里
我刚才查了些资料.因为这几天刚刚做的tomcat集群服务.而Hibernate在tomcat的集群下会出现问题.因为每个Hibernate都有一个实例维护主键的自增.所以多个tomcat运行时会出现id重复的问题! 请问怎么能做到3个tomcat集群下Hibernate主键自增?谢谢[/quote] 你的生成策略怎么写的? http://zhidao.baidu.com/link?url=wRSU4un1NVZ2nTF1pIuUPR4JRW1Rou2P_9yH7bklKjhDiS55uiZG89PC69SuyoWCcDLEG6yKu2LBc6_E41Rxpq
小灯光环 2014-08-08
  • 打赏
  • 举报
回复
用sequence做主键生成策略吧。
LeoXu1990 2014-08-08
  • 打赏
  • 举报
回复
引用 5 楼 u012047741 的回复:
检查下hibernate主键生成策略那里
我刚才查了些资料.因为这几天刚刚做的tomcat集群服务.而Hibernate在tomcat的集群下会出现问题.因为每个Hibernate都有一个实例维护主键的自增.所以多个tomcat运行时会出现id重复的问题! 请问怎么能做到3个tomcat集群下Hibernate主键自增?谢谢
LeoXu1990 2014-08-08
  • 打赏
  • 举报
回复
引用 5 楼 u012047741 的回复:
检查下hibernate主键生成策略那里
还不是每次插入都有问题.只是偶尔有问题.我也很头大!
-阿克蒙德- 2014-08-08
  • 打赏
  • 举报
回复
检查下hibernate主键生成策略那里
LeoXu1990 2014-08-08
  • 打赏
  • 举报
回复
引用 3 楼 ygycomon 的回复:
[quote=引用 2 楼 xyq418730 的回复:] [quote=引用 1 楼 rui888 的回复:] 会不会并发的问题
我查看了下sql的执行.注册的并发很少.不会是这个问题.而且id已经自增到1900几分钟了.才报1895的主键插入失败. 我看到Hibernate的自动的insert into 的 sql 把id也生成到sql中了.[/quote] 把hibernate执行的sql找出来看下到底是哪里有问题,我觉得是hibernate有问题[/quote] 刚执行完自动生成的sql就出错了 insert into fitness.fitness_member (admin_group_id, email, is_auth, last_login_date, last_login_ip, nickname, password, phone, qq_id, reg_date, sex, username, weibo_id, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) org.springframework.dao.DataIntegrityViolationException: Duplicate entry '1804' for key 'PRIMARY'; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Duplicate entry '1804' for key 'PRIMARY'
致知Fighting 2014-08-08
  • 打赏
  • 举报
回复
引用 2 楼 xyq418730 的回复:
[quote=引用 1 楼 rui888 的回复:] 会不会并发的问题
我查看了下sql的执行.注册的并发很少.不会是这个问题.而且id已经自增到1900几分钟了.才报1895的主键插入失败. 我看到Hibernate的自动的insert into 的 sql 把id也生成到sql中了.[/quote] 把hibernate执行的sql找出来看下到底是哪里有问题,我觉得是hibernate有问题
LeoXu1990 2014-08-08
  • 打赏
  • 举报
回复
引用 1 楼 rui888 的回复:
会不会并发的问题
我查看了下sql的执行.注册的并发很少.不会是这个问题.而且id已经自增到1900几分钟了.才报1895的主键插入失败. 我看到Hibernate的自动的insert into 的 sql 把id也生成到sql中了.
tony4geek 2014-08-08
  • 打赏
  • 举报
回复
会不会并发的问题

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧