Causa dell'errore:la modalità SQL
Puoi impostare il valore predefinito di un DATE
, DATETIME
o TIMESTAMP
campo al valore speciale "zero" di '0000-00-00' come data fittizia se la modalità sql lo consente. Per le versioni di MySQL precedenti alla 5.7.4 questa è regolata dalla modalità NO_ZERO_DATE, vedere questo estratto del documentazione
:
Inoltre, la modalità rigorosa deve essere abilitata per non consentire i valori "zero":
A partire da MySQL 5.7.4 questo dipende solo dalla modalità rigorosa:
Verifica versione e modalità SQL
Quindi dovresti controllare la tua versione di MySQL e la modalità SQL del tuo server MySQL con
SELECT version();
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
Abilita l'INSERTO
Puoi impostare sql_mode per la tua sessione con SET sql_mode = '<desired mode>'
SET sql_mode = 'STRICT_TRANS_TABLES';
Intervallo valido per DATETIME
L'intervallo supportato per DATETIME
è
[1000-01-01 00:00:00] to ['9999-12-31 23:59:59'],
quindi il valore DATETIME minimo valido è '1000-01-01 00:00:00'.
Non consiglierei di utilizzare questo valore.
Nota aggiuntiva
Da MySQL 5.6.5 tutti i TIMESTAMP
e DATETIME
le colonne possono avere il comportamento magico (inizializzazione e/o aggiornamento), non solo TIMESTAMP
e una sola colonna al massimo, vedere Inizializzazione e aggiornamento automatici per TIMESTAMP e DATETIME
:
È possibile modificare l'istruzione CREATE TABLE nel caso di MySQL 5.6.5 o versioni successive in:
CREATE TABLE IF NOT EXISTS `article` (
`article_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`url` VARCHAR(255) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`date_from` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Set the article as new or featured from a datetime.',
`date_to` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Set the article as new or featured to a datetime.',
`backdated_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'The manual datetime that is modified or input by the user.',
`created_on` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'The permanent datetime when the article is created.',
`updated_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'The datetime when the article is updated on.',
PRIMARY KEY (`article_id`, `parent_id`, `template_id`),
UNIQUE INDEX `url_UNIQUE` (`url` ASC))
ENGINE = MyISAM
AUTO_INCREMENT = 66
COMMENT = 'Entity that holds the article with one-to-one properties.';