我正在尝试通过 phpMyAdmin 到一个名为“date_end”的表中进行简单的插入,该列的值为“DATETIME”,默认值设置为“none”(因此,如果在插入时,在 INSERT 行中它是空的) ,该字段不应以值结尾),当我尝试插入如下内容时:
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(我认为这是问题所在)以及 PHP 7.3.0 和 apache 2.4.37。
最佳答案
在 MySQL/MariaDB 中,日期字段不能包含空字符串。默认情况下,如果没有 SQL 严格模式,它们会将它们转换为零日期,这仍然是一个日期,尽管无效,而不是空字符串。您可以将日期字段设置为 NULL,如果值未知则传递 NULL。
Since MariaDB version 10.2.4 ,他们默认启用了 SQL 严格模式,该模式不再允许将空日期插入到数据库中。
Read more about SQL strict mode
If strict mode is enabled, '0000-00-00' is not permitted and inserts produce an error, unless IGNORE is given as well. For INSERT IGNORE and UPDATE IGNORE, '0000-00-00' is permitted and inserts produce a warning.
通过 phpMyAdmin 使用此 SQL 检查您的 MariaDB SQL 模式:SELECT @@global.sql_mode;
如果设置包含 STRICT_ALL_TABLES
或 STRICT_TRANS_TABLES
,则启用严格模式。
关于mysql - 错误 #1265 - 无法在默认 'none' 字段中插入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187352/