首页 > 解决方案 > MySQL 插入 ENUM 字段留空

问题描述

所以我试图用下面的查询插入数据。列releases_isMultipack、releases_isChase、releases_hasChase 和releases_isAssortment 都是enum('0', '1') 类型。0 和 1 代表真假。

INSERT INTO releases (releases_uid, releases_title, releases_releaseDate, releases_boxNumber, releases_hobbyDbId, releases_isMultipack, releases_itemNumber, releases_isChase, releases_hasChase, releases_referenceUrl, releases_componentNumber, releases_isAssortment, releases_craftProductId, releases_craftComponentId) 
    VALUES ('fa4d5128-407a-4c2b-8970-99a36a72b030', 'Woodsy Owl', '2021-03-26T16:05:00-07:00', '', NULL, 0, '52390', 0, 1, 'woodsy-owl-1', '52390a', 0, 9518039, 9518035)

查询工作正常,但是即使在插入语句中提供了值,也只会将 ENUM 列留空。

有谁知道为什么会这样?

标签: mysqlenumsphpmyadmin

解决方案


0和之间有区别'0'

这是一个演示。如果我插入,我会得到一个空白,0因为这不是枚举中的值。

mysql> create table releases (releases_isMultipack enum('0','1'));
Query OK, 0 rows affected (0.06 sec)

mysql> insert into releases values (0);
Query OK, 1 row affected, 1 warning (0.03 sec)

mysql> show warnings;
+---------+------+-----------------------------------------------------------+
| Level   | Code | Message                                                   |
+---------+------+-----------------------------------------------------------+
| Warning | 1265 | Data truncated for column 'releases_isMultipack' at row 1 |
+---------+------+-----------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from releases;
+----------------------+
| releases_isMultipack |
+----------------------+
|                      |
+----------------------+
1 row in set (0.00 sec)

但如果我使用它会起作用'0'

mysql> insert into releases values ('0');
Query OK, 1 row affected (0.03 sec)

mysql> select * from releases;
+----------------------+
| releases_isMultipack |
+----------------------+
|                      |
| 0                    |
+----------------------+

推荐阅读