Ответ 1
MySQL, скорее всего, находится в режиме STRICT.
Попробуйте запустить SET GLOBAL sql_mode=''
или отредактируйте my.cnf, чтобы убедиться, что вы не устанавливаете STRICT_ALL_TABLES
или тому подобное.
Я только что переключился с установки MAMP на собственную установку Apache, MySql и PHP. У меня все работает, но я начал использовать свое веб-приложение в новой среде, и вдруг любые команды INSERT приводят к следующей ошибке:
SQLSTATE [HY000]: общая ошибка: 1364 Поле 'display_name' не имеет значения по умолчанию
Кажется, что я не могу оставить поле пустым, где я мог раньше. Я использую MySql версии 5.6.13
Есть ли способ изменить этот параметр в MySql?
MySQL, скорее всего, находится в режиме STRICT.
Попробуйте запустить SET GLOBAL sql_mode=''
или отредактируйте my.cnf, чтобы убедиться, что вы не устанавливаете STRICT_ALL_TABLES
или тому подобное.
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 ''
Все эти ответы - хороший способ, но я не думаю, что вы хотите всегда заходить в свою БД и изменять значение по умолчанию, которое вы установили в NULL.
Я предлагаю вам перейти в app/User.php и изменить protected $fillable
чтобы он занял ваши новые поля в массиве данных, использованном для регистрации.
Допустим, вы добавили новое поле ввода с именем "first_name"
, ваш $fillable
должен выглядеть примерно так:
protected $fillable = [ 'first_name', 'email', 'password',];
Это сделало это для меня. Удачи!
Я также столкнулся с этой проблемой, и есть два способа решить эту проблему в Laravel.
Во-первых, вы можете установить значение по умолчанию как ноль. Я покажу вам пример:
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 устанавливает значение по умолчанию как ноль.
во-вторых, в вашей модели установите поле ввода в protected $fillable
поле protected $fillable
. как пример:
protected $fillable = [
'name', 'email', 'password', 'slug', 'gender','pic'
];
Я думаю, что второй в порядке, чем первый, и вы также можете без проблем установить как обнуляемую, так и заполняемую функцию.
Кроме того, у меня была эта проблема с использованием 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. Надеюсь, это кому-то поможет, спасибо!
Я получил эту ошибку, когда забыл добавить новые поля/столбцы формы в массив $fillable
в модели Laravel; модель раздевала их.
да.
**You can fix that error chose the null value in mysql.**