Подтвердить что ты не робот

Ошибка MySql: 1364 Поле 'display_name' не имеет значения по умолчанию

Я только что переключился с установки MAMP на собственную установку Apache, MySql и PHP. У меня все работает, но я начал использовать свое веб-приложение в новой среде, и вдруг любые команды INSERT приводят к следующей ошибке:

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

Кажется, что я не могу оставить поле пустым, где я мог раньше. Я использую MySql версии 5.6.13

Есть ли способ изменить этот параметр в MySql?

4b9b3361

Ответ 1

MySQL, скорее всего, находится в режиме STRICT.

Попробуйте запустить SET GLOBAL sql_mode='' или отредактируйте my.cnf, чтобы убедиться, что вы не устанавливаете STRICT_ALL_TABLES или тому подобное.

Ответ 2

MySQL, скорее всего, находится в режиме STRICT, что не обязательно плохо, потому что вы рано или поздно заметите ошибки/проблемы, а не только слепо думаете, что все работает так, как вы планировали.

Измените столбец, чтобы разрешить null:

ALTER TABLE `x` CHANGE `display_name` `display_name` TEXT NULL

или, присвойте ему значение по умолчанию в виде пустой строки:

ALTER TABLE `x` CHANGE `display_name` `display_name` TEXT NOT NULL DEFAULT ''

Ответ 3

Все эти ответы - хороший способ, но я не думаю, что вы хотите всегда заходить в свою БД и изменять значение по умолчанию, которое вы установили в NULL.

Я предлагаю вам перейти в app/User.php и изменить protected $fillable чтобы он занял ваши новые поля в массиве данных, использованном для регистрации.

Допустим, вы добавили новое поле ввода с именем "first_name", ваш $fillable должен выглядеть примерно так:

protected $fillable = [ 'first_name', 'email', 'password',]; 

Это сделало это для меня. Удачи!

Ответ 4

Я также столкнулся с этой проблемой, и есть два способа решить эту проблему в Laravel.

  1. Во-первых, вы можете установить значение по умолчанию как ноль. Я покажу вам пример:

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

В приведенном выше примере вы можете установить nullable() для этой функции. Затем, когда вы вставляете данные, MySQL устанавливает значение по умолчанию как ноль.

  1. во-вторых, в вашей модели установите поле ввода в protected $fillable поле protected $fillable. как пример:

    protected $fillable = [
        'name', 'email', 'password', 'slug', 'gender','pic'
    ];
    

Я думаю, что второй в порядке, чем первый, и вы также можете без проблем установить как обнуляемую, так и заполняемую функцию.

Ответ 5

Кроме того, у меня была эта проблема с использованием Laravel, но она была исправлена путем изменения схемы базы данных, чтобы разрешить "нулевые" входы в таблицу, где я планирую собирать информацию из отдельных форм:

public function up()
{

    Schema::create('trip_table', function (Blueprint $table) {
        $table->increments('trip_id')->unsigned();
        $table->time('est_start');
        $table->time('est_end');
        $table->time('act_start')->nullable();
        $table->time('act_end')->nullable();
        $table->date('Trip_Date');
        $table->integer('Starting_Miles')->nullable();
        $table->integer('Ending_Miles')->nullable();
        $table->string('Bus_id')->nullable();
        $table->string('Event');
        $table->string('Desc')->nullable();
        $table->string('Destination');
        $table->string('Departure_location');
        $table->text('Drivers_Comment')->nullable();
        $table->string('Requester')->nullable();
        $table->integer('driver_id')->nullable();
        $table->timestamps();
    });

}

→ обнуляемый(); Добавлено в конец. Это использует Laravel. Надеюсь, это кому-то поможет, спасибо!

Ответ 6

Я получил эту ошибку, когда забыл добавить новые поля/столбцы формы в массив $fillable в модели Laravel; модель раздевала их.

Ответ 7

да.

 **You can fix that error chose the null value in mysql.**