sql >> Databasteknik >  >> RDS >> Mysql

Kan inte ändra tabellen, får fel 1067 Ogiltigt standardvärde

Lite bakgrund om sql_mode och 'NO_ZERO_DATE':http:// dev.mysql.com/doc/refman/5.1/en/sql-mode.html

Du nämnde att du återställde tabellerna från en annan server. Om du använde mysqldump så är svaret på din fråga att mysql stängde av läget 'NO_ZERO_DATE' när du laddade den dumpade SQL-filen. Mysqldump (testat i 5.5) placerar den här raden överst i den dumpade SQL-filen:

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

Det stänger också av kontroller av främmande nycklar och andra användbara saker när du laddar dumpen.

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

Detta förklarar varför du kunde återställa borden, men när du försöker ändra måste du spela enligt striktare regler. Om du verkligen vill åsidosätta detta kan du prova följande precis innan din ändringstabell:

mysql> SET SESSION sql_mode='';

Ändra sedan tabell.




  1. Nodejs med sequelize kunde inte skapa tabeller i mysql workbench efter att ha startat servern

  2. Exportera till csv/excel sätt att inkludera inledande nolla

  3. Bästa sättet att hantera felstavningar i en MySQL-fulltextsökning

  4. Kör skriptet efter behållarens ingångspunkt i docker-compose