繁体   English   中英

SQLSTATE [22007]:无效的日期时间格式:1292错误的日期时间值:第1行的“ created_at”列为“ 1970-01-01 00:00:01”

[英]SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '1970-01-01 00:00:01' for column 'created_at' at row 1

Laravel Framework 5.5.43
Server version Mysql    5.7.23-0ubuntu0.18.04.1

我使用Seeder。

DatabaseSeeder.php

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
    *
     * @return void
     */
   public function run()
    {
         $this->call(UsersTableSeeder::class);


//        factory(App\User::class, 50)->create();

    }
}

UserFactory.php

$factory->define(App\User::class, function (Faker $faker) {

    static $password;

    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => $password ?: $password = bcrypt('secret'),
        'remember_token' => str_random(10),
    ];


 });


 $factory->defineAs(App\User::class, 'admin',function (Faker $faker) {

    return [
         'name' => 'user',
         'email' => 'user@gmail.com',
         'password' => bcrypt('123456'),
         'remember_token' => str_random(10),
    ];
});



$factory->defineAs(App\Article::class, 'admin',function (Faker $faker) {

    return [
        'title' => '_title',
        'slug' => '_slug',
        'description_short' => '_description_short',
    'description' => '_description',
    'meta_title'=>'',
    'meta_description'=>'',
    'meta_keyword'=>'',
    'published'=>'1',
    'viewed'=>2,
];

});

UsersTableSeeder.php

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    //

    factory(App\User::class, 'admin', 1)->create()->each(function ($user){

        $user->user_article()->save(factory(App\Article::class, 'admin')->make());

    });
}
}

2018_06_08_112606_create_articles_table.php

    public function up()
        {
    Schema::create('articles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('slug')->unique();
        $table->text('description_short')->nullable();
        $table->text('description')->nullable();
        $table->string('image')->nullable();
        $table->boolean('image_show')->nullable();
        $table->string('meta_title')->nullable();
        $table->string('meta_description')->nullable();
        $table->string('meta_keyword')->nullable();
        $table->boolean('published');
        $table->integer('viewed')->nullable();
        $table->integer('created_by')->nullable();
        $table->integer('modified_by')->nullable();
        $table->timestamps();

       });
    }

2014_10_12_000000_create_users_table.php

 public function up()
        {
       Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
        });
         }

我运行命令:

   php artisan migrate:refresh --seed

并获得消息:

 Seeding: UsersTableSeeder

In Connection.php line 664:

  SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '1970-01-01 00:00:01' for column 'created_at' at row 1 (SQL: insert into `articles` (`title`, `slug`, `description_short`, `description`,`meta_title`, `meta_description`, `meta_keyword`, `published`, `viewed`,`created_at`, `updated_at`) values (_title, title-1409181309, _description_short, _description, , , , 1, 2, 1970-01-01 00:00:01, 2018-09-14 13:09:45));      


    In Connection.php line 458:

  SQLSTATE[22007]: Invalid datetime format: 1292 **Incorrect datetime value: '1970-01-01 00:00:01' for column 'created_at' at row 1

我不明白为什么我为列“ created_at”获得了1970-01-01 00:00:01的值。 我该如何纠正呢?

此外,为什么我为'updated_at'列获得正确的值2018-09-14 13:09:45。 此外,在上面的运行命令之后,将记录插入到用户表中。

我觉得很奇怪。 任何想法? 谢谢。

我建议您更改$table->timestamps(); 通过$table->timestamp('created_at')->useCurrent();

改变这个

$factory->defineAs(App\Article::class, 'admin',function (Faker $faker) {

return [
    'title' => '_title',
    'slug' => '_slug',
    'description_short' => '_description_short',
    'description' => '_description',
    'meta_title'=>'',
    'meta_description'=>'',
    'meta_keyword'=>'',
    'published'=>'1',
    'viewed'=>2,
];

对此

$factory->defineAs(App\Article::class, 'admin',function (Faker $faker) {

return [
    'title' => '_title',
    'slug' => '_slug',
    'description_short' => '_description_short',
    'description' => '_description',
    'meta_title'=>'',
    'meta_description'=>'',
    'meta_keyword'=>'',
    'published'=>'1',
    'viewed'=>2,
    'created_at' => $faker->dateTime(),
    'updated_at' => $faker->dateTime(),
];

与用户工厂相同。

更新

或者,请检查您数据库中各列的日期时间格式。 如果与您发送的内容不匹配,请更正。

希望这对您有所帮助。

您应该在用户模型中设置protected $dates

class User extends Model {

    // .. you code

    protected $dates = [
        'created_at',
        'updated_at',
    ];

    // .. you code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM