Kolejny raz muszę poprosić o poradę, mianowicie za pomocą biblioteki Faker próbuję wypełnić przykładową tabelę 30 000 rekordami w następujący sposób:
<?php
use Faker\Generator as Faker;
$factory->define(App\Car::class, function (Faker $faker) {
$date = $faker->dateTimeBetween('-2 years', '+0 years')->format('Y-m-d H:i:s');
return [
'model' => $faker->sentence,
'created_at' => $date,
'updated_at' => $date
];
});
Pola created_at oraz updated_at zostały wygenerowane przez Laravel.
Najśmieszniejszy w tym wszystkim jest fakt, że kilka tysięcy rekordów zostaje dodanych do tabeli, ale losowo dla jednego rekordu rzucony jest wyjątek:
Illuminate\Database\QueryException : SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2017-03-26 02:50:30' for column 'created_at' at row 1 (SQL: insert into `cars` (`model`, `created_at`, `updated_at`)...
i przez to seedowanie zostaje przerwane.
Pytanie: Dlaczego skoro dla mniej więcej 7-10 tysięcy rekordów zostaje dodanych bez problemu, a później "program" krzyczy i przerywa pracę? Winny jest PHP, Laravel, Faker, a może mysql? :)
Struktura bazy