SQLSTATE [HY000]: общая ошибка: 1364 Поле «пол» не имеет значения по умолчанию - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь запустить проект в laravel и получаю эту ошибку при выборе пола при регистрации.

SQLSTATE [HY000]: Общая ошибка: 1364 Поле 'sex' нене имеет значения по умолчанию

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

Если я с помощью опции «Gender» Null в моем phpMyAdmin работает без ошибок, но не показывает пол, но «NULL».

HTML

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

Я уже сделал:

SET GLOBAL sql_mode = '';

Я также добавил SET sql_mode = в PHPMyAdmin, но продолжаю получать сообщение об ошибке.

Ответы [ 3 ]

2 голосов
/ 22 июня 2019

Похоже, вы правильно выполнили миграцию, используя nullable. Могу ли я спросить, удалили ли вы старую БД и перенастроили ее с включенным $table->string('gender')->nullable();? Возможно, он все еще работает со старой базой данных, в которой поле gender не может быть обнуляемым.

Следующая вещь - попытаться просто ввести данные напрямую, чтобы увидеть, связана ли проблема с БД или с вводом данных из формы. Попробуйте это:

return User::create([
  'name' => 'testname',
  'avatar' => $avatar_path,
  'gender' => 'MALE',
  'email' => 'aa@bb.com',
  'password' => Hash::make($data['password']),
]);

Если это работает, проблема заключается в том, что из формы исходит нулевое значение, а БД не настроена на нулевое значение.

Кроме того, убедитесь, что в пользовательской модели поле gender действительно заполнено. на вашей пользовательской модели убедитесь, что она выглядит следующим образом:

protected $fillable = [
    'name',
    'avatar',
    'gender',  <--- make sure that gender is here
    // Etc.
];
0 голосов
/ 22 июня 2019

вам нужно добавить nullable в поле пола в миграции

$table->type('gender')->nullable();
0 голосов
/ 22 июня 2019

каков тип данных пола?

если это строка, то вы должны добавить в db значение NULL, если его нет, тогда вы можете изменить значение в форме на 0 или 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...