usuario strict_trans_tables remember_token have general error doesn mysql

mysql - strict_trans_tables - general error 1364 laravel



error de mysql 1364 El campo no tiene valores predeterminados (11)

Abra phpmyadmin y vaya a la pestaña ''Más'' y seleccione el submenú ''Variables''. Desplácese hacia abajo para encontrar el modo sql. Edite el modo sql y elimine ''STRICT_TRANS_TABLES'' Guárdelo.

Mi mesa se ve como

create table try ( name varchar(8), CREATED_BY varchar(40) not null);

y luego tengo un disparador para autopoblar el campo CREATED_BY

create trigger autoPopulateAtInsert BEFORE INSERT on try for each row set new.CREATED_BY=user();

Cuando hago una inserción usando

insert into try (name) values (''abc'');

la entrada está hecha en la tabla, pero sigo recibiendo el mensaje de error

Field ''CREATED_BY'' doesn''t have a default value Error no 1364

¿Hay alguna manera de suprimir este error sin hacer que el campo sea nulable Y sin eliminar el triggfer? De lo contrario, mi hibernación verá estas excepciones (aunque las inserciones se hayan realizado) y la aplicación se bloqueará.


Antes de cada acción de inserción, añadí la línea siguiente y resolví mi problema,

SET SQL_MODE = '''';

No estoy seguro si esta es la mejor solución,

SET SQL_MODE = ''''; INSERT INTO `mytable` ( `field1` , `field2`) VALUES (''value1'', ''value2'');


Cuando tuve el mismo problema con mysql5.6.20 instalado con Homebrew, lo resolví yendo a my.cnf

nano /usr/local/Cellar/mysql/5.6.20_1/my.cnf

Encuentra la línea que se ve así:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Comenta sobre la salida y reinicia el servidor mysql

mysql.server restart

Error ido!


En phpmyadmin, realice lo siguiente:

select @@GLOBAL.sql_mode

En mi caso, obtengo lo siguiente:

ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES ,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Copie este resultado y elimine STRICT_TRANS_TABLES . Luego, realice lo siguiente:

set GLOBAL sql_mode=''ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION''


Establezca un valor predeterminado para Created_By (por ejemplo: empty VARCHAR ) y el activador actualizará el valor de todos modos.


Esto es causado por el modo SQL STRICT_TRANS_TABLES definido en

% PROGRAMDATA% / MySQL / MySQL Server 5.6 / my.ini

archivo. Eliminar esa configuración y reiniciar MySQL debería solucionar el problema.

Ver https://www.farbeyondcode.com/Solution-for-MariaDB-Field--xxx--doesn-t-have-a-default-value-5-2720.html

Si la edición de ese archivo no soluciona el problema, consulte http://dev.mysql.com/doc/refman/5.6/en/option-files.html para conocer otras posibles ubicaciones de los archivos de configuración.



Modifique su consulta y agregue "IGNORE" como:

INSERT IGNORE INTO `mytable` ( `field1` , `field2`) VALUES (''value1'', ''value2'');


Para usuarios de Windows WampServer :

WAMP> MySQL> my.ini

archivo de búsqueda para sql-mode=""

Descomúnjalo.


Su trabajo y probado Copy to Config File: /etc/mysql/my.cnf OR /bin/mysql/my.ini

[mysqld] port = 3306 sql-mode=""

luego reinicia MySQL


configuro los campos para que no sean nulos y el problema se resuelva, se actualiza cuando se ordena almacenar una información en él, ya no muestra el mensaje msqli de que el campo estaba vacío porque no le ha insertado ningún valor, la aplicación bien de esta solución puede funcionar en algunos proyectos depende de la estructura de su proyecto.