Erreur MySQL datetime DEFAULT CURRENT_TIMESTAMP
1.
Quand j'ai couru cette syntaxe de MYSQL sur windows, il a couru correctement.
CREATE TABLE New
(
id bigint NOT NULL AUTO_INCREMENT,
timeUp datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)
Mais quand j'ai essayé d'exécuter ce code sur Linux j'ai eu une erreur
#1067 - Invalid default value for 'time'
2.
Sous windows, le cas n'est pas sensible, par exemple. De nouveau et de nouveau les deux sont considérés comme identiques. Mais sous linux, l'affaire est sensible.
Configuration de Linux
MySQL 5.5.33 , phpMyAdmin 4.0.5 et PHP version 5.2.17
De Configuration de Windows
MySql: article 5.6.11, phpMyAdmin 4.0.4.1 PHP : 5.5.0
Est leurs façon de faire commune pour les deux systèmes. Ou de toute autre approche. Merci pour la lecture.
source d'informationauteur Johny Pie
Vous devez vous connecter pour publier un commentaire.
La
DEFAULT CURRENT_TIMESTAMP
de soutien pour unDATETIME
(datatype) a été ajoutée en MySQL 5.6.En 5.5 et versions antérieures, cette applique uniquement à
TIMESTAMP
(datatype) colonnes.Il est possible d'utiliser un
BEFORE INSERT
déclencheur de 5,5 à attribuer une valeur par défaut pour une colonne.Sensibilité à la casse (des requêtes sur les valeurs stockées dans des colonnes) est due à la
collation
utilisé pour la colonne. Les classements se terminant en_ci
sont insensibles à la casse. Par exemplelatin1_swedish_ci
est insensible à la casse, maislatin1_general_cs
est sensible à la casse.La sortie de
SHOW CREATE TABLE foo
montrera le jeu de caractères et collation pour le type de caractère colonnes. C'est spécifiée au niveau des colonnes. Le "par défaut", a précisé au niveau de la table s'applique pour les nouvelles colonnes sont ajoutées à la table lorsque la nouvelle définition de la colonne de ne pas spécifier un characterset.Mise à JOUR
Kaii a souligné que ma réponse au sujet "de la casse" traite des valeurs stockées dans les colonnes, et si les requêtes renvoie la valeur d'une colonne contenant une valeur de
"New"
sera retourné avec un prédicat comme"t.col = 'new'"
.Voir Kaii de réponse quant à identificateurs (par exemple, les noms de table) d'être traités différemment (par défaut) sur Windows que sur Linux.
Comme le
DEFAULT CURRENT_TIMESTAMP
question est déjà répondu, je vais seulement répondre à la casse de décalage dans les noms de table entre windows et linux.Sur Windows, les systèmes de fichiers sont par défaut pas sensible à la casse.
Mais sur Linux et les autres UNIX comme système d'Exploitation, ils sont sensibles à la casse par défaut.
La raison pourquoi vous obtenez une erreur dans le comportement ici est le système de fichiers, comme chaque table est créée dans un fichier séparé et le système de fichiers gère la casse pour vous.
MySQL a un paramètre pour ignorer ce comportement:
Ceci est un extrait de l' Manuel MySQL sur le cas de la sensibilité des identificateurs
si tu veut délai par défaut doivent changer pour
timestamp
dans votre type de données,la
datetime
va afficher l'entrée de l'utilisateur de la table...http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html