Mysql 错误1265-无法在默认的“无”字段中插入空值

Mysql 错误1265-无法在默认的“无”字段中插入空值,mysql,datetime,null,mariadb,default-value,Mysql,Datetime,Null,Mariadb,Default Value,我正试图通过phpMyAdmin简单地插入到一个名为“date_end”的列中,该列的“DATETIME”类型值和默认值设置为“none”,因此,如果在插入时,插入行为空,则字段不应以值结尾,当我尝试插入类似的内容时: INSERT INTO `tasks` (`id`, `customer`, `technician`, `date_start`, `date_end`, `description`) VALUES (NULL, '', '', '', ''

我正试图通过phpMyAdmin简单地插入到一个名为“date_end”的列中,该列的“DATETIME”类型值和默认值设置为“none”,因此,如果在插入时,插入行为空,则字段不应以值结尾,当我尝试插入类似的内容时:

INSERT INTO `tasks` 
            (`id`, `customer`, `technician`, `date_start`, `date_end`, `description`) 
    VALUES (NULL, '', '', '', '', '');
我得到以下错误:1265-第1行“date_end”列的数据被截断,然后为“data_start”和“data_end”插入的值是“0000-00-00 00:00:00”,而不是空字段。只有当INSERT语句中的“date_start”和/或“date_end”为空时,才会发生这种情况

我已经从Wamp改为Xampp,而在Wamp中,这并没有发生,所以我猜这与mysql配置有关吗?我不确定


我使用的是MariaDB 10.1.37,我认为这是PHP7.3.0和apache 2.4.37的问题。

MySQL/MariaDB日期字段中不能包含空字符串。默认情况下,如果没有SQL严格模式,他们会将其转换为零日期,这仍然是一个无效的日期,而不是空字符串。您可以将日期字段设置为NULL,如果值未知,则传递NULL。 ,他们默认启用了SQL严格模式,不再允许将空日期插入数据库。

如果启用了严格模式,则不允许使用“0000-00-00”,并且插入会产生错误,除非也给出了忽略。对于插入忽略和更新忽略,允许使用“0000-00-00”,并且插入会产生警告

通过phpMyAdmin使用此SQL检查您的MariaDB SQL模式:选择@@global.SQL\u模式;
如果设置包含STRICT\u ALL\u表或STRICT\u TRANS\u表,则启用严格模式。

在MySQL/MariaDB日期字段中不能包含空字符串。默认情况下,如果没有SQL严格模式,他们会将其转换为零日期,这仍然是一个无效的日期,而不是空字符串。您可以将日期字段设置为NULL,如果值未知,则传递NULL。 ,他们默认启用了SQL严格模式,不再允许将空日期插入数据库。

如果启用了严格模式,则不允许使用“0000-00-00”,并且插入会产生错误,除非也给出了忽略。对于插入忽略和更新忽略,允许使用“0000-00-00”,并且插入会产生警告

通过phpMyAdmin使用此SQL检查您的MariaDB SQL模式:选择@@global.SQL\u模式;
如果设置包含STRICT_ALL_表或STRICT_TRANS_表,则启用严格模式。

如果date_end将为none/default,则根本不传入列,或使用NULL而不是空字符串。datetime是否可以保留none?听起来好像是出错了。@user3783243我已经做过好几次了。默认情况下,该字段没有“none”值,而是空值。请从列中删除id。如果您不打算填充该列,请从列表中忽略它。id列为Ai。如果date_end将为none/default,则根本不传入该列,或者使用NULL而不是空字符串。datetime是否可以保留none?听起来好像是出错了。@user3783243我已经做过好几次了。默认情况下,该字段没有“none”值,而是空值。请从列中删除id。如果您不打算填充它,请从列表中忽略它。id列是Ai。谢谢。我就是这么想的。所以,即使更新MariaDB,我也不能将空字符串作为DATETIME列的值?这就是我所理解的。再次感谢你!非常感谢。我就是这么想的。所以,即使更新MariaDB,我也不能将空字符串作为DATETIME列的值?这就是我所理解的。再次感谢你!