mysql 有一个表更新时提示Field 'id' doesn't have a default value

mysql 有一个表更新时提示Field 'id' doesn't have a default value,其他表是好的。插入时也没问题。id字段也是自增主键。这是什么问题

更新的时候没有给id赋值,把id置为空了吧,给它设置为自增就行了,或者就拿之前的id再放进去,具体得看修改是怎么个写法

出现这种方法的主要原因是设置id这个主键的时候没有定义自增,所以就会报这样的错误。打开数据库,看一下id字段是否选择自增

ALTER TABLE your_table MODIFY COLUMN id INT AUTO_INCREMENT PRIMARY KEY;

更新id为1

UPDATE your_table SET column1 = 'value1', column2 = 'value2' WHERE id = 1;
  • 你可以参考下这篇文章:Field 'id' doesn't have a default value
  • 除此之外, 这篇博客: mysql报错:java.sql.SQLException: Field 'id' doesn't have a default value中的 mysql报错:java.sql.SQLException: Field ‘id’ doesn’t have a default value 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 数据库增加数据报错:java.sql.SQLException: Field ‘id’ doesn’t have a default value
    原因是表的id属性没有设置自动递增。

    java.sql.SQLException: Field 'id' doesn't have a default value
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
    	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
    	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
    	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
    	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
    	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2124)
    	at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2058)
    

    在设计表的时候,id作为主键勾选自动递增即可解决此问题。
    在这里插入图片描述

img