Поднятие сценария Seed Ошибка неверного формата даты и времени - PullRequest
0 голосов
/ 18 апреля 2020

Я переместил свое приложение с laravel 5 на 7, и при начальной загрузке начальная ошибка переноса начального числа миграции: Миграция: 2018_08_09_113432_create_vote_item_users_results_table

Подсветка \ База данных \ QueryException

  SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2020-03-29 03:03:20' for column 'created_at' at row 1 (SQL: insert into `vt2_vote_item_users_result` (`user_id`, `vote_item_id`, `is_correct`, `created_at`) values (5, 27, 0, 2020-03-29 03:03:20))

которой у меня не было предварительно 1-2 года работаю с этим приложением. Моя таблица создана с миграцией

public function up()
{
    Schema::create('vote_item_users_result', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('vote_item_id')->unsigned();
        $table->foreign('vote_item_id')->references('id')->on($this->vote_items_tb)->onDelete('CASCADE');

        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on($this->users_tb)->onDelete('CASCADE');

        $table->boolean('is_correct')->default(false);
        $table->timestamp('created_at')->useCurrent();
        $table->unique(['vote_item_id', 'user_id'], 'vote_item_users_result_vote_item_id_user_id_index');
        $table->index(['vote_item_id', 'is_correct', 'user_id'], 'vote_item_users_result_vote_item_id_is_correct_user_id_index');
    });
    Artisan::call('db:seed', array('--class' => 'VoteItemUsersResultsInitData'));
}

, после этой миграции я вижу следующие поля в таблице vt2_vote_item_users_result таблицы db:

id  int(10) unsigned Auto Increment 
vote_item_id    int(10) unsigned    
user_id int(10) unsigned    
is_correct  tinyint(1) [0]  
created_at  timestamp [CURRENT_TIMESTAMP]   

и, запустив начальное начальное число, я вручную заполняю поле made_at по мере необходимости эта дата находится в некотором диапазоне, не только на дату создания:

$usersList             = User::all();
$votesList             = Vote::all();
$faker = \Faker\Factory::create();

foreach ($usersList as $nextUser) {

    foreach ($votesList as $nextVote) {
        $voteItemsList = VoteItem::getByVote($nextVote->id)->orderBy('ordering', 'asc')->get();
        if ( count($voteItemsList) > 0 ) {
            $random_index = mt_rand(0, count($voteItemsList) - 1);
            if ( ! empty($voteItemsList[$random_index]->id)) {

                if ( $voteItemsList[$random_index]->is_correct and in_array($nextVote->id,[1,2]) ) continue;
                if ( !$voteItemsList[$random_index]->is_correct and in_array($nextVote->id,[3,4]) ) continue;


                DB::table('vote_item_users_result')->insert([
                    'user_id'      => $nextUser->id,
                    'vote_item_id' => $voteItemsList[$random_index]->id,
                    'is_correct'   => $voteItemsList[$random_index]->is_correct,
                    'created_at'   => $faker->dateTimeThisMonth()->format('Y-m-d h:m:s'), // I fill created_at manually
                ]);
            }
        }
    } // foreach ($votesList as $nextVote) {

} // foreach ($usersList as $nextUser) {

Запуск sql с ошибкой как:

insert into `vt2_vote_item_users_result` (`user_id`, `vote_item_id`, `is_correct`, `created_at`) 
  values (5, 27, 0, '2020-03-29 03:03:20')

Я получил ошибку:

 Error in query (1292): Incorrect datetime value: '2020-03-29 03:03:20' for column 'created_at' at row 1

Не вижу, почему ошибка? sql -элемент кажется действительным ...

Mysql 5.7.29-0ubuntu0.18.04.1
Laravel Framework 7.6.2
PHP 7.2.24-0ubuntu0.18.04.4

Спасибо!

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