Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да задам стойността по подразбиране на поле като '0000-00-00 00:00:00'?

Причина за грешката:SQL режим

Можете да зададете стойността по подразбиране на DATE , DATETIME или TIMESTAMP поле на специалната "нулева" стойност на "0000-00-00" като фиктивна дата, ако режимът на sql го позволява. За версии на MySQL по-ниски от 5.7.4 това се управлява от режима NO_ZERO_DATE, вижте този откъс от документация :

Освен това строг режим трябва да бъде активиран за забрана на "нулеви" стойности:

От MySQL 5.7.4 това зависи само от стриктния режим:

Проверете версията и SQL режим

Така че трябва да проверите вашата версия на MySQL и SQL режим на вашия MySQL сървър с

SELECT version();
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session

Активиране на INSERT

Можете да зададете sql_mode за вашата сесия с SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Валиден диапазон за DATETIME

Поддържаният диапазон за DATETIME е

[1000-01-01 00:00:00] to ['9999-12-31 23:59:59'], 

така че минималната валидна стойност DATETIME е '1000-01-01 00:00:00'.
Не бих препоръчал да използвате тази стойност обаче.

Допълнителна бележка

От MySQL 5.6.5 всички TIMESTAMP и DATETIME колоните могат да имат магическо поведение (инициализиране и/или актуализиране), а не само TIMESTAMP и само една колона, вижте Автоматично инициализиране и актуализиране за TIMESTAMP и DATETIME :

Можете да промените своя израз CREATE TABLE в случай на MySQL 5.6.5 или по-нова на:

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.';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unicode (шестнадесетични) символни литерали в MySQL

  2. django.db.utils.operationalError:(2059, Плъгин за удостоверяване 'caching_sha2_password')

  3. рекурсивна функция, за да получите всички дъщерни категории

  4. Свържете се с mysql на Amazon EC2 от отдалечен сървър

  5. MySQL default date() + 14 дни, за колона?