0

查看整数值。似乎设置 Unsigned 属性会覆盖字段长度。

传统上,MYSQL 将 BOOLEAN 别名转换为 TINYINT(1)。根据 inter-webs,从 MySQL 8.0.17 开始,整数数据类型的显示宽度规范已被弃用。有两个例外,其中包括: TINYINT(1) 但是,有一个错误(已知或未知 IDK),当我在任何 TINYINT 值上设置 UNSIGNED 时,显示长度会下降。

重现步骤:

  1. 创建一个表,其中包含一个旨在用作 BOOLEAN 的字段;

    CREATE TABLE users( idint unsigned NOT NULL AUTO_INCREMENT, user_namevarchar(50) NOT NULL, passwordvarchar(255) NOT NULL, is_activetinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY ( id), ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

  2. 观察 TINYINT(1) 上的显示长度实际上已设置。

  3. 更改表以使 is_active 成为 UNSIGNED 值:

    ALTER TABLE users CHANGE COLUMN is_active is_activeTINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ;

  4. 观察到 TINYINT 不再有显示长度。

  5. 项目清单

预期结果:

我认为“BOOLEAN”的正确字段属性将是无符号的,因为您的选项将是 0 或 1。不是否定的。因此,我希望 TINYINT(1) 的 UNSIGNED 行为与签名行为相同,并且将设置/保留字段显示长度。

问题:

有没有其他人遇到过这种行为?关于变通的任何想法?现在我坚持使用签名的 tinyint ......

4

0 回答 0