MySQL ENUM 和 SET 类型数据插入错误分析

在 MySQL 中,ENUMSET 类型常用于存储有限的预定义选项。以下代码创建了一个名为 t_enum_set 的表,其中 gender 列使用 ENUM 类型,hobby 列使用 SET 类型:

CREATE TABLE t_enum_set (
	gender ENUM('男', '女'),
	hobby SET('游戏', '睡觉', '打代码', '运动')
);

然而,如果尝试使用以下语句插入数据:

INSERT INTO t_enum_set VALUES(2, 5);

将会出现错误:

ERROR 1265 (01000): Data truncated for column 'gender' at row 1

这是因为 25 不是 ENUMSET 类型列的合法取值。ENUMSET 类型的值必须是定义的选项之一。

正确的插入方式:

INSERT INTO t_enum_set VALUES('男', '游戏,睡觉,打代码');

'男'gender 列的合法取值,而 '游戏,睡觉,打代码'hobby 列的合法取值,表示这个人的爱好是游戏、睡觉和打代码。

错误分析:

当使用数字 25 插入数据时,MySQL 会将它们自动转换为空字符串 ''。由于空字符串无法匹配 ENUMSET 类型定义的选项,因此会被截断。最终插入的结果如下:

+--------+------------------+
| gender | hobby            |
+--------+------------------+
|        |                  |
+--------+------------------+

总结:

在使用 ENUMSET 类型时,请务必使用定义的选项进行数据插入。切勿使用与选项无关的数字或其他类型的值,否则将导致数据错误。

MySQL ENUM 和 SET 类型数据插入错误分析

原文地址: http://www.cveoy.top/t/topic/nnF6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录