php - 错误值默认 ENUM Mysql 类型

标签 php mysql database enums

正如我在这里看到的每一个地方:

From the MySQL manual:

If an ENUM column is declared to permit NULL, the NULL value is a legal value for the column, and the default value is NULL. If an ENUM column is declared NOT NULL, its default value is the first element of the list of permitted values.

但是在我的数据库里不是这样的!!!!为什么?

这是字段结构之一:

`dead` enum('0','1') NOT NULL DEFAULT '0';

但是为什么死区的所有数据都是空的???

如果我选择该类型来输入值,这将是列表:

 ()Empty
 (0)
 (1)

为什么总是 null ?

另一件事是当我使用这样的查询时:

 UPDATE TABLE SET dead = 0 -> result : dead = null
 UPDATE TABLE SET dead = 1 -> result : dead = 0
 UPDATE TABLE SET dead = 2 -> result : dead = 1

最好的问候。

最佳答案

不清楚您的要求。

这是 fiddle :http://sqlfiddle.com/#!9/8b24d0/1

dead 未在 INSERT 查询中设置时我们可以看到:

insert into table1 (id) values (4);

mysql 把你的默认值放在那里 '0' 我猜这就是你所期望的。

我不知道你使用的是什么版本的 mysql,但在我的 fiddle 中很明显 mysql 不允许:

UPDATE  table1 SET dead = 0;

因为它是枚举,它只允许:

UPDATE  table1 SET dead = '0';

这是正确的预期行为,因为您为列选择了 ENUM 类型。所以我无法重现 OP 行为中描述的内容。如果其他人可以?

GUESS 我猜您正在尝试将现有表列与该列中的现有数据进行转换,但卡住了。因此,要运行 alter table,您应该首先修复数据,例如:

UPDATE table1 SET dead='0' WHERE dead IS NULL;

因此,一旦您修复了数据,您就可以尝试ALTER TABLE 来设置DEFAULT

关于php - 错误值默认 ENUM Mysql 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002922/

相关文章:

php - 使用 PDO 获取单个返回值

用于连接两个查询的 MySQL 查询

mysql - 同时进行 SQL 连接和分组

mysql - 如果我有一个依赖表并且知道第三个表中的值,请从一个表​​中删除行

java - 数据库连接和 OutOfMemoryError : Java Heap Space

javascript - requestFrameAnimation 使用持续时间时断断续续

php - 查询2表连接

PHP 函数 is_nan() 对字符串抛出警告

database - Heroku:上线时要改变什么?

php - 与 'reading initial communication packet' 处的 MySQL 服务器失去连接,系统错误 : 110