You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB如何使用INSERT复制现有表记录并处理SQL错误1364

问题原因

你提供的建表语句中不存在DB_ROW_HASH_1字段,说明该字段是后续新增到threats表中的,且配置了NOT NULL非空约束同时没有设置默认值。你执行INSERT语句时没有为该字段传值,因此触发1364错误。

解决方案

以下三种方案按优先级从高到低选择:

  • 方案1:INSERT语句补充该字段赋值
    如果该字段允许直接复用原有记录的值,或者你可以自行生成合法值,直接在插入字段列表和SELECT查询中补充该字段即可,示例(以复用原记录值为例):
INSERT INTO `threats` (biDataset, txtTrainee, jsonParams, DB_ROW_HASH_1)
SELECT 15, NULL, jsonParams, DB_ROW_HASH_1 FROM `threats` WHERE biDataset=9;

注意:如果DB_ROW_HASH_1字段配置了唯一索引约束,不要直接复用原记录的值,需要自行生成新的合法唯一值传入,避免触发唯一键冲突报错。

  • 方案2:给字段补充默认值
    如果该字段不需要手动赋值,应该使用固定默认值,先修改表结构为该字段配置默认值即可,注意替换下方语句中的字段类型、默认值为实际配置:
ALTER TABLE `threats` 
MODIFY COLUMN `DB_ROW_HASH_1` 字段类型 DEFAULT 默认值 NOT NULL;

修改完成后再执行你原来的INSERT语句即可正常运行。

  • 方案3:临时关闭严格模式(仅测试环境临时使用,不建议生产环境操作)
    如果只是临时需要执行插入,可以临时关闭MySQL严格模式绕开校验:
SET sql_mode = '';
-- 执行你的INSERT语句
INSERT INTO `threats` (biDataset, txtTrainee, jsonParams)
SELECT 15, NULL, jsonParams FROM `threats` WHERE biDataset=9;

内容的提问来源于stack exchange,提问作者SPlatten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:15:03