Это прозвучало неожиданно, и я понятия не имею, почему это происходит или что это вызвало.
У меня есть таблица с именем users.
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('nick')->unique();
$table->string('password');
$table->string('email')->unique();
$table->string('avatar')->default('avatar/default.png');
$table->string('role')->default('user');
$table->string('status')->default('active');
$table->text('suspension_reason')->nullable();
$table->integer(' referred_by')->unsigned()->nullable();
$table->timestamp('referred_date')->nullable();
$table->text('referred_message')->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
}
Поскольку я занимаюсь разработкой, я занимаюсь:
php artisan migrate:fresh --seed
Весь день без проблем. На последней итерации я добавил этот столбец роль , который вы видите отдельно от других, это не должно быть проблемой.
Сеялка, которую я использую для этой таблицы:
$users = [
['name' => 'Alfa', 'nick' => 'alfa', 'password' => '123123', 'email' => 'alfa@gmail.com', 'status' => 'active', 'role'=>"deputy"],
['name' => 'Beta Beta', 'nick' => 'beta', 'password' => '123123', 'email' => 'beta@gmail.com', 'status' => 'invited', 'role'=>'user'],
['name' => 'Charlie Charlie', 'nick' => 'charlie', 'password' => '123123', 'email' => 'charlie@gmail.com', 'status' => 'suspended', 'suspension_reason' => 'Mala Conducta', 'role'=>'user'],
];
foreach ($users as $u) {
$user = User::create([
'name' => $u['name'],
'nick' => $u['nick'],
'email' => $u['email'],
'password' => bcrypt($u['password']),
'status' => $u['status'],
'role' => $u['role'],
'suspension_reason' => $u['suspension_reason'] ?? NULL,
]);
$user->save();
}
Как видите, здесь ничего особенного. Он работал весь день.
Теперь, после добавления столбца «роль», я получил следующее сообщение об ошибке из PDO:
Illuminate\Database\QueryException : SQLSTATE[22007]:
Invalid datetime format: 1292 Incorrect datetime value:
'2019-04-07 02:52:04' for column 'updated_at' at row 1
(SQL: insert into `users` (`name`, `nick`, `email`, `password`,
`status`, `role`, `suspension_reason`, `updated_at`, `created_at`)
values (Alfa, alfa, alfa@gmail.com,
$2y$10$uy5PtZ8RPyGCOOH1DXO8NeNtN2cVAwgtTtPXvVFIzUYAKAi8RpCJO,
active, deputy, , 2019-04-07 02:52:04, 2019-04-07 02:52:04))
Я добавил разрывы строк для удобочитаемости, но это в одну строку.
Я прочитал несколько ответов на несколько похожих вопросов, и все они относятся к проблеме с форматом DateTime, которую я не вижу, поскольку это Y-m-d H: m: s, как того требует MySQL. Как бы то ни было, несколько часов назад все работало идеально, считывая данные, записывая данные и т. Д., Оно просто перестало работать. Конечно, я не внес никаких изменений в конфигурацию базы данных или что-либо еще, кроме добавления столбца роли.
Конечно, теперь, если я удалю это изменение, оно все равно не будет работать.