Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens « Valeur par défaut non valide pour \'create_date\'\ » lorsque j'utilise `0000-00-00 00:00:00` comme valeur par défaut pour un champ TIMESTAMP dans MySQL ?

Pourquoi est-ce que j'obtiens « Valeur par défaut non valide pour \'create_date\'\ » lorsque j'utilise `0000-00-00 00:00:00` comme valeur par défaut pour un champ TIMESTAMP dans MySQL ?

DDD
DDDoriginal
2024-10-31 15:37:01270parcourir

Why am I getting

Correction d'une valeur par défaut non valide pour le champ TIMESTAMP dans MySQL

Lors de la tentative de création d'une table avec un champ TIMESTAMP et de la spécification d'une valeur par défaut de ' 0000-00-00 00:00:00', vous pouvez rencontrer l'erreur "Valeur par défaut non valide pour 'create_date'." Cela est souvent dû à un paramètre de mode SQL du serveur MySQL.

Explication

Le mode SQL NO_ZERO_DATE impose une rigueur autour de la gestion des dates zéro. Il empêche l'insertion de '0000-00-00' comme date valide, le considérant comme une valeur invalide.

Solution

Pour résoudre l'erreur, vous pouvez soit :

  • Désactivez le mode SQL NO_ZERO_DATE :

    <code class="mysql">SET SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION';</code>
  • Utilisez l'option IGNORE pour autoriser l'insertion de dates nulles :

    <code class="mysql">CREATE TABLE IF NOT EXISTS `erp`.`je_menus` (
      `id` INT(11) NOT NULL AUTO_INCREMENT ,
      `name` VARCHAR(100) NOT NULL ,
      `description` VARCHAR(255) NOT NULL ,
      `live_start_date` DATETIME NULL DEFAULT NULL ,
      `live_end_date` DATETIME NULL DEFAULT NULL ,
      `notes` VARCHAR(255) NULL ,
      `create_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' IGNORE,
      `created_by` INT(11) NOT NULL ,
      `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
      `updated_by` INT(11) NOT NULL ,
      `status` VARCHAR(45) NOT NULL ,
      PRIMARY KEY (`id`)
    ) ENGINE = InnoDB;</code>

Une fois ces ajustements effectués, vous devriez pouvoir créer avec succès le tableau avec la valeur par défaut spécifiée pour le champ TIMESTAMP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn