2016-11-08 184 views
0

我正在运行MySQL 5.5.47,并且有许多数据库表的数据类型为TINYINT(1)。我试图将这些更改为BOOLEAN但它不会改变它们。phpmyadmin不会将MySQL TINYINT(1)更改为BOOLEAN数据类型

使用phpmyadmin 4.6.0然后去结构我使用下拉列将列设置为BOOLEAN。这将执行以下查询:

ALTER TABLE `feedback` CHANGE `tick_receive_updates` `tick_receive_updates` BOOLEAN NOT NULL; 

查询成功运行。

当我查看结构时不更新:我认为这是一个phpMyAdmin的错误列仍标记为TINYINT(1)

起初,所以我跑

DESCRIBE feedback; 

不幸的是问题仍然存在 - 列没有改变TINYINT(1)

这是为什么?

回答

3

这是正常行为BOOLEAN只是TINYINT(1)

MySQL 5.7 Reference Manual - 12.1.1 Numeric Type Overview

BOOL一个同义词,BOOLEAN

这些类型是TINYINT同义词(1)。零值被认为是 false。非零值被认为是正确的:

+0

有趣。我想知道为什么他们提供BOOLEAN作为一种选择呢?我将接受这个解决方案,因为当我创建* new *表(而不是修改现有的表)并将其设置为BOOLEAN时,它确实在使用DESCRIBE或查看Structure选项卡时显示为TINYINT(1)。很奇怪! – Andy

+3

这不是一个选项,它是一个同义词。 MySQL中有多个同义词,并且有多个原因。 BOOLEAN是其他RDBMS上的真正数据类型,同义词使开发人员可以更轻松地进行转换。对于这一个,我没有真正的其他解释。 –

相关问题