J'ai un tableau comme indiqué ci-dessous. Pour contourner un défaut maintenant restriction de la colonne de MySQL je la pointe comme le montre hereValeur par défaut de l'horodatage de deux colonnes MySQL ERREUR 1067
CREATE TABLE IF NOT EXISTS mytable (
id INT NOT NULL AUTO_INCREMENT ,
create_date TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
update_date TIMESTAMP NULL DEFAULT NOW() ON UPDATE NOW() ,
PRIMARY KEY (`parti_id`))
ENGINE = InnoDB;
Mon sql_mode ne comprend pas NO_ZERO_DATE
comme l'a here ma sortie:
mysql> SELECT @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
1 row in set (0.00 sec)
Il est encore donner l'erreur comme indiqué ci-dessous:
ERROR 1067 (42000) at line xx in file: '/myschema.sql': Invalid default value for 'create_date'
J'utilise MySQL 5.1.37 sur Ubuntu
Comment puis-je résoudre ce problème? Merci.
Ce n'est pas un bug, il est une caractéristique: « Pour une colonne TIMESTAMP dans une table, vous pouvez attribuer l'horodatage en cours comme valeur par défaut et la valeur mise à jour automatique Il est possible que l'horodatage actuel soit la valeur par défaut pour l'initialisation de la colonne, pour la valeur de mise à jour automatique ou les deux Il n'est pas possible que l'horodatage actuel soit la valeur par défaut pour une colonne et la valeur de mise à jour automatique pour une autre colonne. " –
Le débat sur la question de savoir s'il s'agit d'un" bug "ou non reste car cela est très ennuyeux. Pourquoi ne puis-je pas avoir deux colonnes d'horodatage avec une valeur par défaut de now() avec la deuxième colonne de mise à jour automatique? La réponse est que MySQL ne fait pas ça. Je n'appelle pas vraiment cela une fonctionnalité. –
Randy merci pour votre réponse. Je suis conscient du lien que vous avez fourni. Je cherche juste une solution de contournement. Cependant, il semble que toutes les astuces affichées sur Internet ne fonctionnent tout simplement pas. –