Почему MySQL меняет ноль на ноль? - PullRequest
0 голосов
/ 03 декабря 2010

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

Ответы [ 3 ]

4 голосов
/ 03 декабря 2010

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

Обычно я лично использую STRICT_ALL_TABLES.

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

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

1 голос
/ 03 декабря 2010

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

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

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

0 голосов
/ 03 декабря 2010

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

...