Mysql
 sql >> Database >  >> RDS >> Mysql

Impossibile modificare la tabella, viene visualizzato l'errore 1067 Valore predefinito non valido

Qualche informazione su sql_mode e 'NO_ZERO_DATE':http:// dev.mysql.com/doc/refman/5.1/en/sql-mode.html

Hai detto di aver ripristinato le tabelle da un altro server. Se hai usato mysqldump, la risposta alla tua domanda è che mysql ha disattivato la modalità "NO_ZERO_DATE" durante il caricamento dell'SQL scaricato. Mysqldump (testato in 5.5) mette questa riga in cima all'SQL scaricato:

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

Disattiva anche i controlli della chiave esterna e altre cose utili durante il caricamento del dump.

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

Questo spiega perché sei stato in grado di ripristinare i tavoli, ma quando cerchi di modificare devi giocare secondo regole più rigide. Se vuoi davvero sovrascriverlo, puoi provare quanto segue appena prima della tua alter table:

mysql> SET SESSION sql_mode='';

Quindi modifica la tabella.