Oorzaak van de fout:de SQL-modus
U kunt de standaardwaarde van een DATE
. instellen , DATETIME
of TIMESTAMP
veld naar de speciale "nul"-waarde van '0000-00-00' als dummy-datum als de sql-modus dit toelaat. Voor MySQL-versies lager dan 5.7.4 wordt dit bepaald door de NO_ZERO_DATE-modus, zie dit fragment van de documentatie
:
Bovendien moet de strikte modus worden ingeschakeld om "nul"-waarden niet toe te staan:
Vanaf MySQL 5.7.4 dit hangt alleen af van de strikte modus:
Controleer versie en SQL-modus
Controleer dus uw MySQL-versie en de SQL-modus van uw MySQL-server met
SELECT version();
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
Schakel de INSERT in
U kunt de sql_mode voor uw sessie instellen met SET sql_mode = '<desired mode>'
SET sql_mode = 'STRICT_TRANS_TABLES';
Geldig bereik voor DATETIME
Het ondersteunde bereik voor DATETIME
is
[1000-01-01 00:00:00] to ['9999-12-31 23:59:59'],
dus de minimaal geldige DATETIME-waarde is '1000-01-01 00:00:00'.
Ik zou echter niet aanraden om deze waarde te gebruiken.
Aanvullende opmerking
Sinds MySQL 5.6.5 alle TIMESTAMP
en DATETIME
kolommen kunnen het magische gedrag vertonen (initialiseren en/of bijwerken), niet alleen TIMESTAMP
en maximaal één kolom, zie Automatische initialisatie en updates voor TIJDSTEMPEL en DATUMTIJD
:
U kunt uw CREATE TABLE-instructie in het geval van MySQL 5.6.5 of nieuwer wijzigen 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.';