ERREUR 1067 (42000): Invalid valeur par défaut pour "created_at'
Quand j'ai essayé de modifier la table de sa montre l'erreur
ERROR 1067 (42000): Invalid default value for 'created_at'
je google pour cette erreur, mais tout ce que je trouve est que si ils ont essayé de modifier le timestamp cette erreur est survenue, mais ici, je suis en train d'ajouter une colonne et j'obtiens cette erreur
mysql> ALTER TABLE investments ADD bank TEXT;
ERROR 1067 (42000): Invalid default value for 'created_at'
et mon tableau comporte deux dernières colonnes sont created_at et updated_at
voici ma structure de la table de
- quelles sont les valeurs par défaut de ces colonnes ? Pouvez-vous s'il vous plaît partager structure de la table ?
- j'ai mis à jour mon tableau de structure
- définir la valeur par défaut current_timestamp pour les deux dernières colonnes.
Vous devez vous connecter pour publier un commentaire.
Le problème est en raison de sql_modes.
Veuillez vérifier votre actuelle sql_modes par la commande:
Et retirer le sql_mode "NO_ZERO_IN_DATE,NO_ZERO_DATE" pour le faire fonctionner.
C'est la valeur par défaut sql_mode dans mysql nouvelles versions.
Vous pouvez définir sql_mode à l'échelle mondiale en tant que root par la commande:
SET sql_mode
est temporaire.Simplement, avant d'exécuter toutes les déclarations de mettre cela dans la première ligne:
NO_ZERO_IN_DATE,NO_ZERO_DATE
ne nous permet de maintenir les autres caractéristiques de sécurité :SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Je suis tombé sur le même message d'erreur lorsque vous essayez d'installer une base de données de tiers.
J'ai essayé la solution proposée sans succès, c'est à dire
SET sql_mode = '';
Ensuite, j'ai essayé la commande ci-dessous qui a travaillé en permettant à la base de données pour être installé
SET GLOBAL sql_mode = '';
SET sql_mode = '';
est maintenant obsolète,SET GLOBAL sql_mode = ''
est OKEssayer et exécutez la commande suivante:
et
La raison pour laquelle vous obtenez cette erreur est parce que vous êtes de ne pas définir une valeur par défaut pour le
created_at
etupdated_at
champs. MySQL n'est pas l'acceptation de votre commande car les valeurs de ces colonnes ne peuvent pas être null.Espère que cette aide.
Dans mon cas, j'ai un fichier à importer.
Donc j'ai simplement ajouté SET sql_mode = "; au début du fichier et ça marche!!!
Exécuter cette requête:
il fonctionne pour moi
J'ai eu le même problème. Suivant résolu:
Changement:
recollect_date TIMESTAMP DEFAULT 'CURRENT_TIMESTAMP',
à:
recollect_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
c'est à dire juste enlever les guillemets autour de CURRENT_TIMESTAMP.
Espère que cela aide quelqu'un.
Vous pouvez le faire comme ceci:
voir: https://mariadb.com/kb/en/mariadb/timestamp/
échantillon
Résolu mon problème.
Comme mentionné dans @Bernd Buffen de réponse. C'est problème avec MariaDB 5.5, je l'ai mise à niveau simple MariaDB 5.5 vers MariaDB 10.1 et problème résolu.
Voici les Étapes pour mettre à niveau MariaDB 5.5 dans MariaDB 10.1 à CentOS 7 (64-Bit)
Ajouter les lignes suivantes à MariaDB repo.
nano /etc/yum.repos.d/mariadb.repo
et collez les lignes suivantes.
service mariadb stop
Effectuer la mise à jour
yum update
De départ MariaDB & Effectuer la Mise à niveau
service mariadb start
mysql_upgrade
Tout Fait.
Vérifier MariaDB version:
mysql -V
NOTE: Veuillez toujours prendre de sauvegarde de Base de données(s) avant d'effectuer les mises à niveau. Les données peuvent être perdues en cas de mise à niveau a échoué, ou quelque chose s'est mal passé.
Pour Mysql5.7, la connexion à mysql en ligne de commande et exécutez la commande, mysql> show variables like 'sql_mode' ;
Il montrera que NO_ZERO_IN_DATE,NO_ZERO_DATE dans sql_mode.
Essayez d'ajouter une ligne au-dessous de [mysqld] dans votre mysql conf le fichier à supprimer les deux options, le mien(mysql 5.7 sur Ubuntu 16) est /etc/mysql/mysql.conf.d/mysqld.cnf
Maintenant redémarrer mysql. Il fonctionne!
Si vous recevez cette erreur en
Copy database
dansphpmyadmin
vous pouvez effectuer les opérations suivantes:Il suffit de cocher la case
Add DROP TABLE /DROP VIEW
.Juste de le convertir par cette ligne :
pour la nouvelle table :
pour Table Existante:
Source :
https://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html