Я взялся за проект, написанный на Laravel 4. Есть две системы (dev и production), которые в принципе должны делать одно и то же.
Когда я пытаюсь зарегистрировать пользователя (используется пакет cartalyst/sentry), он работает на производстве. В среде разработки это не удается, так как есть некоторые столбцы, определенные как ненулевые, и в коде нет оператора для его установки. Итак, я понимаю, почему он терпит неудачу, чего я не понимаю, так это того, почему он работает на другой машине, и какие настройки я могу сделать на разработчике, чтобы заставить его работать. Без переделки db-колонок (хочу разобраться в системе, прежде чем вносить такие изменения).
Исключение:
SQLSTATE[HY000]: General error: 1364 Field 'auto_token' doesn't have a default value
(SQL: insert into `users` (`first_name`, `last_name`, `display_name`, `email`,
`password`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?, ?)) (Bindings: array ...
Код для регистрации нового пользователя:
$user = Sentry::register(array(
'first_name' => Input::get('first_name'),
'last_name' => Input::get('last_name'),
'display_name'=> Input::get('display_name'),
'email' => Input::get('email'),
'password' => Input::get('password'),
));
Схема БД:
id (unsigned int, not null)
first_name (varchar, not null)
last_name (varchar, not null)
display_name (varchar, not null)
email (varchar, not null)
password (varchar, not null)
auto_token (varchar, not null)
... more columns like auto_token
Продукт: MySQL 5.5.42 — PHP 5.4.30 — работает в Linux
Разработчик: MySQL 5.6.21 — PHP 5.4.30 — работает в Windows
Я знаю, что запрос не должен выполняться успешно, во-первых, схема базы данных в целом ошибочна. Я хотел бы узнать, что вызывает это и как решить эту проблему.
Где я застрял, так это в том, почему в одной системе это работает, а в другой нет. Кто-нибудь знает направление?