首页 > 解决方案 > SQLSTATE[HY000]:一般错误:1364 字段“名称”在 laravel 中没有默认值

问题描述

我正在使用 mysql v5.7 和 laravel v5.8。我使用 by auth 制作了注册功能,当我尝试注册它时显示错误。

SQLSTATE[HY000]:一般错误:1364 字段“名称”没有默认值(SQL:插入usersemail、、、、password)值(***@gmail.com updated_atcreated_at$2yd4GvC,2020-05-25 19: 53:37, 2020-05-25 19:53:37))

它在 localhost 中工作正常,但在将其添加到 ec2 服务器后显示此错误。

我改变了 config/database.php

像这样

'严格' => 假,

然后我可以注册,但名称列中没有值。

在此处输入图像描述

并且可以放置除名称列之外的其他列。

我不知道为什么它可以在本地服务器上运行,但在实时服务器中显示错误。

这是我的代码。

用户.php


class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}



create_users_table.php

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

有谁能够帮我?

标签: phpmysql

解决方案


这个查询:

INSERT INTO users (email, password, updated_at, created_at)
VALUES (***@gmail.com, $2yd4GvC, 2020-05-25 19:53:37, 2020-05-25 19:53:37)

不插入name字段。当该字段不能为 NULL 时,MySQL 会报错。

您在本地主机上没有收到此错误的原因可能是 MySQL 配置不那么严格。

设置'strict' => false,将删除错误,但您的查询仍然不会插入name字段值。

所以真正的解决方案是将你的数据库配置设置为严格(因为这样你会更快地注意到错误)。然后更改您的查询,以便插入该name值。


推荐阅读