Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible de modifier la table, obtention de l'erreur 1067 Valeur par défaut non valide

Quelques informations sur sql_mode et 'NO_ZERO_DATE' :http:// dev.mysql.com/doc/refman/5.1/en/sql-mode.html

Vous avez mentionné que vous avez restauré les tables à partir d'un autre serveur. Si vous avez utilisé mysqldump, la réponse à votre question est que mysql a désactivé le mode 'NO_ZERO_DATE' lors du chargement du SQL vidé. Mysqldump (testé en 5.5) place cette ligne en haut du SQL vidé :

/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

Il désactive également les vérifications de clé étrangère et d'autres éléments utiles lors du chargement du vidage.

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

Cela explique pourquoi vous avez pu restaurer les tables, mais lorsque vous essayez de les modifier, vous devez respecter des règles plus strictes. Si vous voulez vraiment remplacer cela, vous pouvez essayer ce qui suit juste avant votre alter table :

mysql> SET SESSION sql_mode='';

Ensuite, modifiez la table.