mysql 报错异常集合

2022-10-18 12:59:20

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)Causedby: 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-one class="com.art.model.user.UserInfo" fetch="join" name="userInfo" >
   <column name="userId" unique="true"/>
</many-to-one>

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

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


4.异常:HibernateObjectRetrievalFailureException


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

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



  • 作者:TSQTY
  • 原文链接:https://blog.csdn.net/qq_37492785/article/details/78474525
    更新时间:2022-10-18 12:59:20