Неверное значение по умолчанию ENUM Mysql тип

как я вижу везде, даже здесь:

Из руководства MySQL:

Если объявлен столбец ENUM для разрешения NULL, значение NULL является
допустимое значение для столбца, а значением по умолчанию является NULL. Если ENUM
столбец объявлен как NOT NULL, его значением по умолчанию является первый элемент
список допустимых значений.

Но в моей базе это не так !!!! Зачем ?

это одна из структуры поля:

`dead` enum('0','1') NOT NULL DEFAULT '0';

но почему все данные в мертвом поле нулевые ???

и если я выбрал этот тип для ввода значения, это будет список:

 ()Empty
(0)
(1)

Почему всегда ноль?

и еще одна вещь, когда я использую запрос, как это:

 UPDATE TABLE SET dead = 0 -> result : dead = null
UPDATE TABLE SET dead = 1 -> result : dead = 0
UPDATE TABLE SET dead = 2 -> result : dead = 1

С уважением.

1

Решение

Не понятно, о чем вы просите.

Вот скрипка: http://sqlfiddle.com/#!9/8b24d0/1

Как мы можем видеть, когда dead не установлен в INSERT запрос:

insert into table1 (id) values (4);

mysql положил туда ваше значение по умолчанию '0' и это то, что вы ожидали, я думаю.

Я не знаю, какую версию mysql вы используете, но в моей скрипке ясно, что mysql не позволяет:

UPDATE  table1 SET dead = 0;

Поскольку это enum, он позволяет только:

UPDATE  table1 SET dead = '0';

И это правильное и ожидаемое поведение, так как вы выбираете ENUM введите для столбца. Поэтому я не могу воспроизвести описанное в ОП поведение. Если кто-нибудь еще может?

УГАДАЙ Я думаю, что вы пытаетесь преобразовать существующий столбец таблицы с существующими данными в этом столбце и застрял. Итак, чтобы запустить alter table, вы должны сначала исправить данные, например:

UPDATE table1 SET dead='0' WHERE dead IS NULL;

Поэтому, как только вы исправите данные, вы можете попробовать ALTER TABLE установить DEFAULT,

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector