为什么我会收到此错误? MySQL 版本是否发生了某些变化,导致此操作(曾一度有效)现在失败? INSERT INTO 未指定 user_id 值would如果插入已完成,则需要,但由于 id 1 已经存在,因此这应该成为更新并且有效。
mysql> select * from article;
+----+---------+---------------------+-----------+-----------+
| id | user_id | published_at | title | content |
+----+---------+---------------------+-----------+-----------+
| 1 | 1 | 2011-12-10 12:10:00 | article 1 | content 1 |
| 2 | 2 | 2011-12-20 16:20:00 | article 2 | content 2 |
| 3 | 1 | 2012-01-04 22:00:00 | article 3 | content 3 |
+----+---------+---------------------+-----------+-----------+
3 rows in set (0.00 sec)
mysql> desc article;
+--------------+------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+-------------------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(11) unsigned | NO | MUL | NULL | |
| published_at | datetime | NO | | CURRENT_TIMESTAMP | |
| title | varchar(100) | NO | | NULL | |
| content | text | NO | | NULL | |
+--------------+------------------+------+-----+-------------------+----------------+
5 rows in set (0.01 sec)
mysql> INSERT INTO article (id)
-> VALUES (1)
-> ON DUPLICATE KEY UPDATE title = 'article 1b', content = 'content 1b';
ERROR 1364 (HY000): Field 'user_id' doesn't have a default value
MySQL 版本 5.6.12。
你收到错误是因为
- The
user_id
列定义为NOT NULL
- The
user_id
列没有指定默认值
- 您也没有在查询中指定它的值
PS:这个问题与问题无关ON DUPLICATE KEY UPDATE
子句 - 如果您不使用它,也会出现同样的错误。
PPS:无论是否ON DUPLICATE KEY UPDATE
触发 - 你的insert
应满足所有约束条件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)