错误字段在 laravel 5.3 中没有默认值

Posted

技术标签:

【中文标题】错误字段在 laravel 5.3 中没有默认值【英文标题】:Error Field doesn't have a default value in laravel 5.3 【发布时间】:2021-01-05 20:45:43 【问题描述】:

我在 Laravel 5.2 中没有问题,但在 Laravel 5.3 中为用户模型创建迁移后,它显示以下错误:

SQLSTATE[HY000]: General error: 1364 Field 'family' doesn't have a default value!!!

在模型用户中:

protected $fillable = [
    'name', 'email', 'password', 'family', 'mobile', 'address', 'status'
];

迁移中:

Schema::create('users', function (Blueprint $table) 
        $table->increments('id');
        $table->string('name');
        $table->string('family');
        $table->string('mobile')->unique();
        $table->string('address');
        $table->boolean('status');
        $table->string('email')->unique();
        $table->string('password');
        $table->integer('reagent');
        $table->rememberToken();
        $table->timestamps();
    );

我的问题在哪里?

【问题讨论】:

【参考方案1】:

你可以做到nullable:

$table->string('family')->nullable();

或者添加一些默认值:

$table->string('family')->default('none');

之后你应该备份数据并运行:

php artisan migrate:refresh                                      

然后恢复数据。

或者您可以创建一个单独的迁移,只需 change family to a nullable:

Schema::table('users', function (Blueprint $table) 
    $table->string('family')->nullable()->change();
);

【讨论】:

您好,我在$fillable 中添加family password 之后 感谢您的帮助,但在 laravel 5.2 中不要使用 ->nullable() @Ali 它无法在 5.2 中运行而不会出现错误。当您使用任何使用mass assignment 功能的方法(如create()update())时,您将在5.2 和5.3 中都得到错误。【参考方案2】:

您应该将->nullable()->default('somethingHere') 添加到您发送空值的字段中。

$table->string('family')->nullable(); //this means that if you send empty value this field will become mysql NULL

或者设置默认值:

$table->string('family')->default('default value here');

比迁移:

php artisan migrate:rollback

php artisan migrate

【讨论】:

在 Laravel 5.2 中没有任何问题!还有其他方法吗? 你重新迁移了吗? remigrated 是什么意思?【参考方案3】:

我在这里找到我的解决方案是链接: Eloquent create says column has no default value

答案在底部,我也只是引用了答案

imbhavin95 8 个月前回复

然而,现在发生这种情况的原因是 Laravel 5.1 默认对 MySQL 使用严格模式。

如果您想恢复以前的行为,请更新您的 config/database.php 文件并为您的连接设置 'strict' => false。

感谢这个人https://laravel.io/user/imbhavin95

【讨论】:

以上是关于错误字段在 laravel 5.3 中没有默认值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3:语法错误或访问冲突:1463 HAVING 子句中使用了非分组字段“距离”

从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL

Laravel 表更新问题一般错误:1364 字段'start_date'没有默认值

在 laravel 5.3 中删除哈希进程

laravel 5.3 - 在刀片模板中显示来自 mysql 文本字段的 json 数据

laravel 5.3 关系模型使用非默认键