Laravel: неверный формат даты и времени при заполнении таблицы MySQL - PullRequest
0 голосов
/ 07 апреля 2019

Это прозвучало неожиданно, и я понятия не имею, почему это происходит или что это вызвало.

У меня есть таблица с именем 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. Как бы то ни было, несколько часов назад все работало идеально, считывая данные, записывая данные и т. Д., Оно просто перестало работать. Конечно, я не внес никаких изменений в конфигурацию базы данных или что-либо еще, кроме добавления столбца роли.

Конечно, теперь, если я удалю это изменение, оно все равно не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...