Почему MySQL позволяет обновить столбец NOT NULL до NULL?

Я бегуMySql вubuntu 10.10, Я создал таблицу под названием'employee' имея 3 имени поляempno, name and salary, Вставлено несколько объектов. В середине процесса я хочу изменить атрибут зарплаты как'NOT NULL', Я изменяю таблицу как

ALTER TABLE employee MODIFY salary int(10) NOT NULL;

Запрос выполнен. Я хотел проверить с помощью команды,

UPDATE employee SET salary=NULL;

Query OK, 15 rows affected, 15 warnings (0.06 sec)
Rows matched: 15  Changed: 15  Warnings: 15

также дал предупреждения" (Code 1048): Column 'salary' cannot be null "(Повторяется для каждого ряда)

Но когда я увидел свой стол, все зарплаты были нули ('0').

Same queries result in error instead of warning in WINDOWS XP's MySql

Я проверил в обоих двигателях INNODB и MYISAM, но тот же результат. Пожалуйста, помогите мне узнать, что произошло рядом с обработкой.

 Nanne22 мая 2012 г., 15:33
Что вы использовали для выполнения запроса, просто клиент командной строки mysql? Что вы имеете в виду "это не разрешает"? Вы получаете сообщение об ошибке вместо предупреждения?
 Quassnoi22 мая 2012 г., 15:22
Что именно вы подразумеваете под "хорошо работать вXP& Quot ;?
 Nanne22 мая 2012 г., 15:19
Какой у Вас вопрос? Вы устанавливаете свое поле наnot null и вы установите его в NULL. По умолчанию будет0 как ожидается. Что они делают в окнах по вашему мнению? Установка поля вNULL? Это было бы странно.
 kik22 мая 2012 г., 15:30
@Nanne и @ Quassnoi В окнах не разрешается обновлять нулевые значения и отображаются исходные зарплаты, но здесь отображаются все нули. Да, это может быть странно, но для меня результаты были неожиданными. :)
 jcho36022 мая 2012 г., 15:34
Вы можете отредактировать свой вопрос и показать вывод этой команды: show create table employee;

Ответы на вопрос(2)

NOT NULL, (который не допускает значения NULL), и теперь он не позволит установить его наNULL, что было бы ожидаемым поведением.

Причина, по которой у вас 0 в вашей БД, заключается в том, что 0 будет результатом приведения NULL к int.

 22 мая 2012 г., 15:48
Результат кастингаNULL дляINT этоNULL.
 22 мая 2012 г., 15:50
Я думаю, что Кассной прибил это :)
 kik22 мая 2012 г., 15:49
+1 уточнил почти. Но почему он не выполняет то же самое в Windows? почему он дает нули в UBUNTU? :)
Решение Вопроса

SQL_MODE установить строгую на вас установку Ubuntu.

вопрос

SET SQL_MODE='STRICT_ALL_TABLES'

или добавить

SQL_MODE='STRICT_ALL_TABLES'

под[mysqld] на вашmy.cnf наUbuntu.

 22 мая 2012 г., 15:56
@ kik: это не редактируется, как вы можете понять. Запустите редактор подsudo.
 kik22 мая 2012 г., 15:46
+1 Это было круто. :) но где я взял файл my.cnf в Ubuntu?
 kik22 мая 2012 г., 15:53
Это был правильный путь, но говорится, что "не удалось сохранить файл в /etc/mysql/my.cnf. Сохранить под другим именем? & Quot;
 22 мая 2012 г., 15:47
/etc/mysql/my.cnf Я верю, но тебе лучше проверить.

Ваш ответ на вопрос