MySQL默认值错误与ON DUPLICATE KEY UPDATE

2024-02-04

为什么我会收到此错误? 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。


你收到错误是因为

  1. The user_id列定义为NOT NULL
  2. The user_id列没有指定默认值
  3. 您也没有在查询中指定它的值

PS:这个问题与问题无关ON DUPLICATE KEY UPDATE子句 - 如果您不使用它,也会出现同样的错误。

PPS:无论是否ON DUPLICATE KEY UPDATE触发 - 你的insert应满足所有约束条件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL默认值错误与ON DUPLICATE KEY UPDATE 的相关文章

  • 如何在php中正确显示另一种语言的mysql表数据

    我有一个 mySQL 表 其中一列中的数据采用英语以外的语言 波斯语 当我在表中输入数据时 它会正确显示 但是当我想在 php 文件中显示数据时 它会显示如下 好吧 我应该怎么做才能以正确的形式显示数据 由于我经常使用 非英语 字符 因此要
  • 表已满(使用 MEMORY 引擎)

    我想将生产数据库传输到我的开发机器上进行测试 它有 6 张桌子MEMORY出于性能目的的引擎 I did mysqldump routines hxxx uxxx pxxx prod database gt prod dump sql 当我
  • 使用 Hibernate 和 MySQL、全局和本地进行 Spring 事务管理

    我正在使用 MySQL Server 5 1 Spring 3 0 5 和 Hibernate 3 6 开发 Web 应用程序 我使用 Springs 事务管理 我是新手 所以如果我问一个容易回答的问题 请耐心等待 1 我读到了有关全局 x
  • grails/mysql 时区更改

    完成更改应用程序时区的最佳方法是什么 在我看来 必须发生以下情况 服务器 TZ 已被系统管理员更改 mysql必须重新启动 数据库中每个基于时间的列都必须使用convert tz 或等效方法更新所有值 因此 要么必须编写一个 mysql 脚
  • 如果一列没有值,MySQL 返回最大值或 null

    我尝试获取 mysql select 的最大值 但如果有一行不包含时间戳 则希望将其设置为 null empty 0 表统计数据 简化 ID CLIENT ORDER DATE CANCEL DATE 1 5 1213567200 2 5
  • 从所有表中选择

    我的数据库中有很多表都具有相同的结构 我想从所有表中进行选择 而不必像这样列出所有表 SELECT name FROM table1 table2 table3 table4 我尝试过 但这不起作用 SELECT name FROM 有没有
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • MySQL #1093 - 您无法在 FROM 子句中指定用于更新的目标表“赠品”

    I tried UPDATE giveaways SET winner 1 WHERE ID SELECT MAX ID FROM giveaways 但它给出了 1093 您无法指定目标表 赠品 进行更新FROM clause 本文 ht
  • #1115 - 未知字符集:'utf8mb4'

    我的电脑上运行着一个本地网络服务器 用于本地开发 我现在正处于导出数据库并导入到我的托管 VPS 的阶段 导出然后导入时出现以下错误 1115 未知字符集 utf8mb4 有人能指出我正确的方向吗 该错误明确表明您没有utf8mb4您的阶段
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • 如何解决 注意:未定义索引:第 21 行 C:\xampp\htdocs\invmgt\manufactured_goods\change.php 中的 id [重复]

    这个问题在这里已经有答案了 我的 PHP 代码有一个问题 显示 注意 未定义的索引 我确信它非常简单 因为我是初学者 所以我不太清楚到底出了什么问题 所以请帮助我 这是代码
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 有没有办法在 MySQL 中有效地对 TRUNCATE 或 DROP TABLE 进行 GRANT ?

    我最近在 MySQL 5 5 x 中尝试过 GRANT SELECT INSERT UPDATE DELETE TRUNCATE ON crawler TO my user localhost WITH GRANT OPTION 这会导致错
  • 在 MySQL 中执行触发器需要什么权限?

    我发现 MySQL 手册中对 DEFINER 的解释令人困惑 因此我不确定运行应用程序的 执行用户 需要什么权限 为了安全起见 我喜欢将 执行用户 限制为所需的最少权限 我知道触发器 存储过程的创建者需要超级权限 但是 执行用户 是否也需要
  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • PHP,文本从数据库中回显,没有换行,全部一体

    我的数据库中有一个长文本 从 php mayadmin 来看它看起来很好 但是当我将它回显到页面时 它会丢失所有格式 即没有新行 全部都在一个块中 有任何想法吗 Thanks 可能是因为换行符是 n 并且 html 想要 br 所以使用nl
  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行

随机推荐

  • 如何在Python中使用subprocess.call杀死一个调用的子进程? [复制]

    这个问题在这里已经有答案了 我正在使用调用命令 subprocess call cmd shell True 该命令不会自动终止 怎么杀掉它呢 Since subprocess call等待命令完成 您无法以编程方式终止它 您唯一的办法是通
  • suPHP 有安全性吗?

    我不久前问过这个问题 尽管我提供了一些赏金 但我从未得到太多答案 请参阅here https stackoverflow com questions 8032140 implementing log in alongside suphp 更
  • App.config 似乎被忽略

    作为重构操作的结果 我有了这个类库 我添加了一个 App config 文件并添加了如下内容
  • Spring Websockets STOMP - 获取客户端IP地址

    有没有办法获取STOMP客户端IP地址 我正在拦截入站通道 但我看不到任何方法来检查 IP 地址 任何帮助表示赞赏 您可以在握手期间将客户端 IP 设置为 WebSocket 会话属性HandshakeInterceptor public
  • 检查是否启用了锁定

    我必须检查设置中是否启用了系统锁定 我使用下面的代码行 boolean b android provider Settings System getInt getContentResolver Settings System LOCK PA
  • 如何使用新的 Slick 2.0 HList 克服 22 列限制?

    我目前正在编写 Slick 代码来针对具有两个表 gt 22 列的旧模式 我如何使用新的 HList 代码 http slick typesafe com doc 2 0 0 M3 api scala slick collection he
  • 经过后台推送的一些测试/调试后,iPhone 上的“pushDisallowed”和“决定:绝对不能继续”

    我正在创建一个 Xamarin Forms 应用程序 它通过 Azure 通知中心使用后台推送 该应用程序针对 Android 和 iOS 经过一些初步原型设计和测试后 一切在两个平台上都运行良好 对于 iOS 我发送包含以下内容的推送 a
  • 如何阻止 UIBarButtonItem 文本被截断?

    我有一个UIBarButtonItem在导航栏中 文本标题为 保存 当我切换到全屏时UIPopoverController然后关闭它 我的 UIBarButtonItem 中的文本被截断为 S e 对于所有其他的 Segues 和视图 我返
  • VBA Excel - IFERROR 和 VLOOKUP 错误

    我正在尝试在 Excel VBA 中创建与 IFERROR VLOOKUP 1 公式等效的内容 其中该函数将在数据表中查找文本 如果文本位于表中 则返回第五列中的数字如果不是 则为 1 我已经在 Excel 中测试了上述公式 它给了我想要的
  • 无缝 HTML5 视频循环

    我进行了广泛的搜索以找到解决此问题的方法 但没有成功 我创建了一个 4 秒的视频剪辑 可以在编辑器中无缝循环 然而 当剪辑通过 Safari Chrome 或 Firefox 在页面中运行时 从结尾到开头的播放会出现一个小但明显的暂停 我尝
  • java.lang.NullPointerException Selenium 2 类

    当我的程序从本地计算机运行时运行良好 无需使用带有远程 Web 驱动程序的 selenium 网格 但是 当我使用带有远程 Web 驱动程序的 selenium 网格设置相同的测试用例时 在 eclipse 中收到消息说 java lang
  • 获取当前正在执行的线程的TThread对象?

    我想要一个像 GetCurrentThread 这样的函数 它返回当前执行线程的 TThread 对象 我知道有一个 Win32 API 调用 GetCurrentThread 但它返回线程 Id 如果有可能从该 ID 获取 TThread
  • Python错误:NameError:名称未定义[重复]

    这个问题在这里已经有答案了 import numpy as np from scipy import optimize as opt import time def grad d weight 0 0 learnrate 0 01 tol
  • 未启用延迟段创建功能 (ORA-00439)

    I have sql包含 60 多个表的 DDL 的脚本文件 我正在尝试将脚本复制粘贴到 SQL Developer 中 连接到数据库 Oracle Database 11g Express Edition Release 11 2 0 2
  • zurb 基金会中心网格中的内容

    我试图将图像水平居中到 zurb 列中 但这似乎不可能 我尝试了一切 到处搜索 但我无法让它工作 这是我的代码 div class row div class twelve columns br img src img 06 jpeg al
  • 如何删除 Rabbitmq 以便我可以重新安装

    我遇到了麻烦 所以我进入注册表并删除了rabbitmq的服务条目 现在 当我尝试重新安装时 它说它已经存在 但无法启动 因为我删除了它 我可以执行以下操作sc delete rabbitmq 如何完全删除它的所有痕迹并从头开始重新安装 我猜
  • 我想扩展 std::string,但不是出于您可能认为的原因

    我有一个有效地接受字符串的方法 但是 我想要使用的字符串子集非常有限 我正在考虑将 std string 作为某个类进行 typedef ing 并显式调用函数 不过 我不确定这是否有效 有想法吗 通常的规则仍然适用 该类不是设计为继承的
  • 检查 iOS 应用程序上的互联网连接,Cordova Phonegap 3.3.0 无法正常工作

    我尝试过以下this http cordova apache org docs en 3 3 0 cordova connection connection md html The 20Command Line 0AInterfaceCor
  • ASP.Net MVC 基于安全性隐藏/显示菜单项

    我正在开发一个 ASP Net MVC 3 网站 Layout 主视图包含一个菜单 我想根据您是否登录以及您所处的角色隐藏菜单中的一些项目 目前使用这样的代码可以工作 if HttpContext Current User Identity
  • MySQL默认值错误与ON DUPLICATE KEY UPDATE

    为什么我会收到此错误 MySQL 版本是否发生了某些变化 导致此操作 曾一度有效 现在失败 INSERT INTO 未指定 user id 值would如果插入已完成 则需要 但由于 id 1 已经存在 因此这应该成为更新并且有效 mysq