как я вижу везде, даже здесь:
Из руководства 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
С уважением.
Не понятно, о чем вы просите.
Вот скрипка: 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
,
Других решений пока нет …