I took over a project written in Laravel 4. There are two systems (dev and production) which basically should be doing the same.
When I try to register a user (the package used is cartalyst/sentry) it works on production. On the dev environment it fails as there are some columns defined as not null and there is no statement in the code to set it. So I understand why it fails, what I don't understand is why it works on another machine and what kind of tweak I could make on dev to get it working. Without altering the db-columns (I want to understand the system before making such changes).
Exception:
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 ...
Code to regiser a new user:
$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'),
));
DB-Schema:
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
Prod: MySQL 5.5.42 - PHP 5.4.30 - running on Linux
Dev : MySQL 5.6.21 - PHP 5.4.30 - running on Windows
I know that the query should not run successfully in the first place, the database schema in general is flawed. I would like to learn what causes this and how to solve this issue.
Where I got stuck is why on one System it's working and on the other not. Anybody knows a direction?