sql >> Database >  >> RDS >> Mysql

Hoe kan ik de standaardwaarde van een veld instellen op '0000-00-00 00:00:00'?

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


  1. Android biometrische USB-vingerafdrukverificatie tutorial

  2. Tijdstempel met een precisie van milliseconden:hoe u ze opslaat in MySQL

  3. Unieke sleutel in Oracle met voorbeelden

  4. Versleuteling gebruiken om PostgreSQL-databasebeveiliging te versterken