strict_trans_tables remember_token have general error doesnt doesn php mysql

php - remember_token - Error MySQL: 1364 El campo ''display_name'' no tiene valor predeterminado



general error 1364 laravel (5)

Acabo de cambiar de una instalación de MAMP a una instalación nativa de Apache, MySql y PHP. Tengo todo funcionando, pero comencé a usar mi aplicación web en el nuevo entorno y de repente cualquier comando INSERT está dando como resultado el siguiente error:

SQLSTATE [HY000]: Error general: 1364 El campo ''display_name'' no tiene un valor predeterminado

Parece que no puedo dejar un campo en blanco ahora donde pude antes. Estoy usando la versión 5.6.13 de MySql

¿Hay alguna manera de cambiar esta configuración en MySql?


Además, tuve este problema al usar Laravel, pero lo solucioné cambiando mi esquema de base de datos para permitir las entradas "nulas" en una tabla donde planeo recopilar la información de formularios separados:

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(); }); }

El -> nullable (); Añadido al final. Esto está usando Laravel. Espero que esto ayude a alguien, gracias!


Lo más probable es que MySQL esté en modo STRICT , lo cual no es necesariamente algo malo, ya que identificará errores / problemas de manera temprana y no solo a ciegas pensará que todo está funcionando como lo desea.

Cambie la columna para permitir nulo:

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

o, le da un valor predeterminado como cadena vacía:

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


MySQL es más probable en el modo ESTRICTO.

Intenta ejecutar SET GLOBAL sql_mode='''' o edita my.cnf para asegurarte de que no estás configurando STRICT_ALL_TABLES o algo así.


También me enfrenté a ese problema y hay dos formas de resolver esto en laravel.

1.primero es que puede establecer el valor predeterminado como nulo.Le mostraré un ejemplo.

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(); }); }

como en el ejemplo anterior, puede establecer nullable () para esa función. Luego, cuando está insertando datos, mysql establece el valor predeterminado como nulo.

  1. el segundo es en su modelo, establezca su campo de entrada en el campo protegido $ relleno.como ejemplo

    protected $ fillable = [''nombre'', ''email'', ''contraseña'', ''slug'', ''género'', ''pic''];

Creo que el segundo está bien que el primero y también puede establecer la función que admite nulos y que se puede completar al mismo tiempo sin ningún problema.


Todas estas respuestas son buenas, pero no creo que quiera ir siempre a su base de datos y modificar el valor predeterminado que ha establecido en NULL. Te sugiero que vayas a la aplicación / User.php y modifiques el $ relleno seguro para que tome tus nuevos campos en la matriz de datos utilizada para registrarte. Digamos que agrega un nuevo campo de entrada llamado "first_name", su $ rellenable debería ser algo como esto: protected $ fillable = [''first_name'', ''email'', ''password'',]; Esto lo hizo por mí. ¡Buena suerte!