首页 > 解决方案 > 错误 1364 (HY000):字段“名称”没有默认值

问题描述

我正在尝试将一列拆分为三个不同的列并将拆分值插入表中。

这是我正在使用的声明。

INSERT INTO table1 (X, Y, Z)
SELECT 
     SUBSTRING_INDEX(XYZ, "-", 1),
     SUBSTRING_INDEX(SUBSTRING_INDEX(XYZ, "-", -2), "-", 1),
     SUBSTRING_INDEX(SUBSTRING_INDEX(XYZ, "-", -1), "-", 2)
FROM table1;

但是我收到此错误:

ERROR 1364 (HY000): Field 'Name' doesn't have a default value

这对我来说没有多大意义,因为我根本没有调用“名称”字段。

我肯定知道选择语句本身就可以工作,但是插入似乎也不行。

如果有人有任何意见或建议,将不胜感激!

标签: mysqlsql

解决方案


显然,您有一个名为的列,该列name已声明NOT NULL且没有任何DEFAULT值。 INSERT插入新行,通常您需要部分或全部列的值。

我怀疑您真正想要的不是INSERT而是-连续UPDATE更改值:

UPDATE table1
    SET X = SUBSTRING_INDEX(XYZ, '-', 1),
        Y = SUBSTRING_INDEX(SUBSTRING_INDEX(XYZ, '-', -2), '-', 1),
        Z = SUBSTRING_INDEX(SUBSTRING_INDEX(XYZ, '-', -1), '-', 2);

推荐阅读