簡體   English   中英

SQLSTATE [HY000]:一般錯誤:1364 字段“名稱”在 laravel 中沒有默認值

[英]SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value in laravel

我正在使用 mysql v5.7 和 laravel v5.8。 我使用 auth 注冊了 function ,當我嘗試注冊時顯示錯誤。

SQLSTATE [HY000]:一般錯誤:1364 字段“名稱”沒有默認值(SQL:插入usersemailpasswordupdated_atcreated_at )值(***@gmail.com,2yd4GvC,$2yd4Gv 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();
        });
    }

有誰能夠幫我?

這個查詢:

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值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM