mysql 报错异常集合

1.异常:mysql 1062 –Duplicate entry '1' for key 'PRIMARY'


我是已经创建你一个表,并插入数据后。对表添加一列并设为主键时报错,其中图上双引号中的'1'也有可能为''

原因:新输入的列中的数据都为空,属于重复,该列有重复所以不能设为主键。

解决办法:1.先设计表添加列。

                    2.每行数据的该列输入不同的数据,保证不重复

                    3.设计表中,把该列设为主键

   

       

2.异常:org.hibernate.exception.GenericJDBCException: could not execute statement


junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)Caused by: java.sql.SQLException: Field 'uid' doesn't have a default valueat com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073)at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009)at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)... 45 more


从上面的异常信息中,可以发现是因为缺少主键自增的设置,所以才导致这种错误的出现。 
解决方法:设置主键自动递增


3.异常:No row with the given identifier exists

   <many-to-on e class="com.art.model.user.UserInfo" fetch="join" name="userInfo" >
   <column name="userId" unique="true"/>
</many-to-on e>

修改后的:
<many-to-on e class="com.art.model.user.UserInfo" fetch="join" name="userInfo"  not-found="ignore" >
   <column name="userId" unique="true"/>
</many-to-on e>

红色是修改的部分。意思是当对应的数据不存在时 忽略掉,用null值填充。该属性默认值:exception 。


4.异常:HibernateObjectRetrievalFailureException


   错误原因: 
 数据造成hibernate出错. 
在一个递归的数据模型中, 如 一个表结构如下 
  id, name , parentId, desc . 
其中, parentId中的数据必须包含在id列中. 如果有一个异常的情况. 
使用hibernate查询的时候,就会报上述错. 

如果你也有这样的错, 请先检查你的数据吧! 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值