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<column name="userId" unique="true"/>
</many-to-on
修改后的:
<many-to-on
<column name="userId" unique="true"/>
</many-to-on
红色是修改的部分。意思是当对应的数据不存在时 忽略掉,用null值填充。该属性默认值:exception 。
4.异常:HibernateObjectRetrievalFailureException
错误原因:
数据造成hibernate出错.
在一个递归的数据模型中, 如 一个表结构如下
id, name , parentId, desc .
其中, parentId中的数据必须包含在id列中. 如果有一个异常的情况.
使用hibernate查询的时候,就会报上述错.
如果你也有这样的错, 请先检查你的数据吧!