查看整数值。似乎设置 Unsigned 属性会覆盖字段长度。
传统上,MYSQL 将 BOOLEAN 别名转换为 TINYINT(1)。根据 inter-webs,从 MySQL 8.0.17 开始,整数数据类型的显示宽度规范已被弃用。有两个例外,其中包括: TINYINT(1) 但是,有一个错误(已知或未知 IDK),当我在任何 TINYINT 值上设置 UNSIGNED 时,显示长度会下降。
重现步骤:
创建一个表,其中包含一个旨在用作 BOOLEAN 的字段;
CREATE TABLE
users
(id
int unsigned NOT NULL AUTO_INCREMENT,user_name
varchar(50) NOT NULL,password
varchar(255) NOT NULL,is_active
tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (id
), ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;观察 TINYINT(1) 上的显示长度实际上已设置。
更改表以使 is_active 成为 UNSIGNED 值:
ALTER TABLE
users
CHANGE COLUMNis_active
is_active
TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ;观察到 TINYINT 不再有显示长度。
项目清单
预期结果:
我认为“BOOLEAN”的正确字段属性将是无符号的,因为您的选项将是 0 或 1。不是否定的。因此,我希望 TINYINT(1) 的 UNSIGNED 行为与签名行为相同,并且将设置/保留字段显示长度。
问题:
有没有其他人遇到过这种行为?关于变通的任何想法?现在我坚持使用签名的 tinyint ......