php artisan db:seed --class=PostsTableSeeder
したら怒られた。
開発環境
MySQL 5.7.38
PHP 7.3.33
Laravel 6.20.44
エラー文
Terminal
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value
: '1658634263' for column 'created_at' at row 1
(SQL: insert into `posts` (`user_id`, `title`, `body`, `created_at`, `updated_at`)
values (2, title1, body1, 1658634263, 1658634263))
何が起こっている?
時間の型が違う。
当初、シーダーファイルでは
PoststableSeeder.php
'created_at' => time(),
'updated_at' => time()
としていた。
が、マイグレーションファイルに設定されているtimestamp型は 'YYYY-mm-dd HH:MM:SS'という形。
これに対し上記time型は 'HH:MM:SS'という形だったことによるアンマッチ。
どうしたらいい?
DateTime型を指定する。
つまりシーダーファイルの怒られていた部分を
PostsTableSeeder.php
'created_at' => new DateTime(),
'updated_at' => new DateTime()
としてやればよい。
参照)
・日付型と時刻型(DATE, TIME, DATETIME, TIMESTAMP, YEAR)
・MySQLの不正な日時値エラーを修正する方法
そうしてから改めて
Terminal
php artisan db:seed --class=PostsTableSeeder
すると・・・
できた~!!!\(^o^)/