2016-11-08 3 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; 

Запрос выполняется успешно.

Когда я осматриваю структуру он не обновляется: колонки по-прежнему отмечены как TINYINT(1)

Сначала я думал, что это было PHPMyAdmin ошибка, поэтому я побежал

DESCRIBE feedback; 

К сожалению, проблема остается - столбцы не изменились с TINYINT(1)

Почему это?

ответ

3

Это нормальное поведение, как BOOLEAN просто синонимом из TINYINT(1)

MySQL 5.7 Reference Manual - 12.1.1 Numeric Type Overview

BOOL, булевы

Эти типы являются синонимами TINYINT (1). Значение 0 считается ложным. Ненужные значения считаются истинными:

+0

Интересно. Интересно, почему тогда они предоставляют BOOLEAN в качестве опции? Я соглашусь с этим в качестве решения, поскольку, создав таблицу * new * (вместо того, чтобы модифицировать существующую), и установите ее в BOOLEAN, она действительно отображается как TINYINT (1) при использовании DESCRIBE или на вкладке Structure. Очень странно! – Andy

+3

это не вариант, это синоним. В MySQL есть несколько синонимов, и для них есть несколько причин. BOOLEAN является реальным типом данных на других РСУБД, синоним упрощает переход для разработчика. Для этого нет никакого другого объяснения. –

Смежные вопросы