Почему MySQL меняет ноль на ноль?

0

Я совершенно новый для баз данных и SQL.
У меня есть столбец с меткой NOT NULL.
Когда я забываю дать значение этому столбцу при выполнении INSERT, он вставляет в этот столбец значение 0.
Есть ли что-нибудь, что я могу сделать, чтобы вернуть ошибку вместо изменения NULL на 0?

  • 1
    У вас есть по умолчанию в этом столбце?
  • 0
    Это целочисленный столбец? Вы вообще не передаете значение или считаете, что оно пустое?
Показать ещё 2 комментария
Теги:
null

3 ответа

4
Лучший ответ

Вы хотите посмотреть конфигурацию SQL_MODE. Это позволяет вам определить, как строгая MySQL обрабатывает такие вещи. По умолчанию это довольно мягко, что не то, что я обычно хочу. Это также зависит от типа данных, особенно с Датами он по умолчанию менее оптимален.

Я лично обычно ходил за STRICT_ALL_TABLES.

См. руководство по MySQL (5.0) здесь:

http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

  • 0
    Я сделал "SET sql_mode = 'STRICT_ALL_TABLES';" и теперь он возвращает сообщение об ошибке всякий раз, когда я забываю столбец NOT NULL. Большое спасибо.
1

Для этого есть две возможные причины:

  • У вас есть значение по умолчанию для этого столбца
  • Ваш столбец INT NOT NULL и отбрасывает NULL в INT, что приводит к 0

Вторая ситуация, похоже, имеет место здесь, очевидно. Если вы хотите получить ошибку, вы можете изменить SQL_MODE на строгую. Другая возможность заключается в том, чтобы выполнить проверку ввода в вашей прогаме, а не оставлять ее в SQL.

0

Я думаю, у вас есть значение DEFAULT для этого столбца

Ещё вопросы

Сообщество Overcoder
Наверх
Меню