Mysql 默认为 null 的 int 字段设置为 0

Mysql int field with default null is set to 0

我对 Mysql table 有疑问。首先我的服务器版本 5.6.17 我使用 PHPmyadmin 4.2.0 在 PHP 版本 5.5.12 和 PHP 的数据库客户端上管理它myadmin 使用:Database client version: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $ 和使用的 PHP 扩展在 phpmyadmin mysqli

问题是当使用默认值 null 将数字字段更改或设置为 int 或 float 时,它接受 null 值,对于没有向其提供数据的字段,它设置为 0

我使用以下 SQL:

ALTER TABLE `country` CHANGE `area` `area` INT(11) NULL DEFAULT NULL;

我希望在没有数据的字段中看到 NULL 而看不到 0 因为这会在应用程序检查 NULL 值但发现它为 0 时造成一些问题。我试图从 MySQL 中查找有关与所考虑版本相关的任何错误的任何公告,但我找不到任何东西。

这不是错误,您的旧值是 0(有效整数)。特征值将为 NULL。 如果 0 是您应用程序的正常值,那么您就有问题了。 如果 0 不是您应用程序的预期值,只需将您的 0 值更新为 NULL。

UPDATE country SET `area` = NULL WHERE `area` = 0