Я переместил свое приложение с 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
Спасибо!