Laravel 5.3 Creating Models Returns “El campo no tiene un valor predeterminado”

Estoy usando Laravel y Eloquent durante dos años y hoy he decidido instalar un Laravel 5.3 nuevo y probar algo con él.

Utilicé un viejo esquema de base de datos mío y creé mis modelos, definí columnas rellenables. Este es el aspecto de mi modelo de Page :

 belongsToMany(Menu::class); } } 

url atributo url es una columna de tipo TEXT en MySQL, así que si no le paso ningún valor al crear un modelo, debería ser una cadena vacía. En cambio, sigo obteniendo SQLSTATE[HY000]: General error: 1364 Field 'url' doesn't have a default value error de SQLSTATE[HY000]: General error: 1364 Field 'url' doesn't have a default value .

Aquí está mi bash de crear un modelo de publicación:

 Page::create([ 'title' => $root_menu['title'], 'slug' => $root_menu['slug'], 'language' => $this->language, 'wireframe' => key(config('cms.wireframe')), 'order' => 0 ]); 

¿Es este un problema relacionado con Laravel 5.3 o me falta algo? Gracias de antemano por sus ayuda.

El motivo del error ha sido explicado por @Nicklas.

La razón por la que esto está sucediendo ahora, sin embargo, es que Laravel 5.3 usa el modo strict para MySQL por defecto.

Si desea volver al comportamiento anterior, actualice su archivo config/database.php y configure 'strict' => false para su conexión.

Está intentando insertar un objeto, sin el atributo ‘URL’, en una tabla que tiene una columna ‘URL’ sin un valor predeterminado. Entonces, la base de datos no puede saber qué hacer con esa columna.

Puedes hacer una de tres cosas.

  1. Complete el valor de URL en la creación
  2. Cambie su esquema para permitir la inserción nula en la URL
  3. Cambie el esquema de URL para incluir un valor predeterminado. (cuerda vacía)

Publique su migración o esquema, si necesita más ayuda.