Przyczyna błędu:tryb SQL
Możesz ustawić domyślną wartość DATE
, DATETIME
lub TIMESTAMP
pole na specjalną „zero” wartość „0000-00-00” jako fikcyjną datę, jeśli pozwala na to tryb sql. W przypadku wersji MySQL starszych niż 5.7.4 jest to regulowane przez tryb NO_ZERO_DATE, zobacz ten fragment dokumentacja
:
Dodatkowo musi być włączony tryb ścisły, aby nie zezwalać na wartości „zero”:
Od MySQL 5.7.4 zależy to tylko od trybu ścisłego:
Sprawdź wersję i tryb SQL
Powinieneś więc sprawdzić swoją wersję MySQL i tryb SQL serwera MySQL za pomocą
SELECT version();
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session
Włącz INSERT
Możesz ustawić tryb sql_mode dla swojej sesji za pomocą SET sql_mode = '<desired mode>'
SET sql_mode = 'STRICT_TRANS_TABLES';
Prawidłowy zakres dla DATETIME
Obsługiwany zakres dla DATETIME
jest
[1000-01-01 00:00:00] to ['9999-12-31 23:59:59'],
więc minimalna prawidłowa wartość DATETIME to „1000-01-01 00:00:00”.
Nie polecam jednak używania tej wartości.
Dodatkowa uwaga
Od MySQL 5.6.5 wszystkie TIMESTAMP
i DATETIME
kolumny mogą mieć magiczne zachowanie (inicjowanie i/lub aktualizowanie), nie tylko TIMESTAMP
i najwyżej jedną kolumnę, zobacz Automatyczna inicjalizacja i aktualizacja TIMESTAMP i DATETIME
:
Możesz zmienić instrukcję CREATE TABLE w przypadku MySQL 5.6.5 lub nowszego na:
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.';