SQLSTATE [HY000]:常规错误:1364字段“性别”没有默认值

时间:2019-06-22 00:12:21

标签: php html laravel frameworks

我正在尝试在laravel中启动一个项目,并且在注册时选择性别时遇到此错误。

  

SQLSTATE [HY000]:常规错误:1364字段“性别”没有   默认值

<div id='d1'>
1
</div>
<div id='d2'>
2
</div>
<div id='d3'>
  <div id='d3a'>
  3a
  </div>
</div>

如果我通过phpMyAdmin中的“性别” Null选项运行,则不会出现错误,但是不会显示性别,而是显示“ NULL”。

HTML

public function removeProfile($child)
{
    $profile = Profile::find(1);
    $child->profiles()->detach($profile);

    return 'Success';
}

我已经做过:

return User::create([
    'name' => $data['name'],
    'avatar' => $avatar_path,
    'gender' => $data['gender'],
    'email' => $data['email'],
    'password' => Hash::make($data['password']),
]);

我还向PHPMyAdmin添加了<div class="form-group row"> <label for="name" class="col-md-4 col-form-label text-md-right">Gender</label> <div class="col-md-6"> <select name="gender" class="col-md-4 control-label"> <option value="male" name="male">Male</option> <option value="female" name="female">Female</option> </select> @error('gender') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> ,但我不断收到错误消息。

3 个答案:

答案 0 :(得分:2)

使用nullable,看来迁移正确。请问您是否已删除旧数据库并重新迁移其中包含的enumerate()?也许它仍然可以在没有i字段可为空的旧数据库上工作。

接下来的事情是尝试直接输入数据以查看问题出在DB还是来自表单的输入。试试这个:

temperatures = [33, 66, 65, 62, 59, 60, 62, 64, 70, 76, 80, 69, 80, 83, 68, 79, 61, 53, 50, 49, 53, 48, 45, 39]    
hour_ex = []

for i, temperature in enumerate(temperatures):
    if temperature > 70:
        hour_ex.append(i)

print(hour_ex) # => [9, 10, 12, 13, 15]

如果这行得通,则问题在于表单中出现了空值,并且数据库未设置为采用空值。

还要确保用户模型实际上具有hour_ex = [i for i, temp in enumerate(temperatures) if temp > 70] 字段为可填写字段。在您的用户模型上,确保其外观如下:

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

答案 1 :(得分:0)

什么是性别的数据类型?

如果它是字符串,则应在db中添加可为null的值,否则可以将其值更改为0或1

答案 2 :(得分:0)

您需要在迁移过程中的性别字段中添加可空值

$table->type('gender')->nullable();