MySQL: «Нарушение ограничений целостности» «Столбец не может быть нулевым» для tinyint, но не для smallint

#mysql #sql

#mysql #sql

Вопрос:

Вот ошибка, которую я получаю:

SQLSTATE[23000]: нарушение ограничений целостности: 1048 Столбец ‘financial_access’ не может быть нулевым (SQL: вставить в sss_users ( first_name , last_name , email , password , roles , church , financial_access , church_sponsor , updated_at , created_at ) ценности (Дебипрасад, Саху, my-email-id@gmail.com , y$ohh67yNFjzYCbhYUrEJ2u.C.oe9xuOndhG2m7pFs7P5pVIwV9MxwC, администратор, , , , 2014-06-23 15:51:50, 2014-06-23 15:51:50))

  • church поле есть smallint(5) UNSIGNED not null .
  • financial_access есть tinyint(1) default '0' not null .

Почему я получаю ошибку для tinyint(1) поля, но не для smallint(5) поля, которое так легко принимает пустую строку в запросе?

Комментарии:

1. Я подозреваю, что в сообщении об ошибке отображается только один столбец с ошибкой, а не все столбцы с ошибками. Поэтому, если вы исправите financial_access , вы получите сообщение об ошибке для church .

2. Нет, я исправил ошибку, указав ‘0’ как для ‘financial_access’, так и для ‘church_sponsor’. Но я не получаю никаких исключений для церкви. Он принимает значение null в запросе и сохраняет запись в базе данных как 0.

3. Я даже не уверен, как вы разрешаете этот синтаксис. Я получаю синтаксическую ошибку, когда пытаюсь поставить две запятые в строке в INSERT запросе.