sql >> Databáze >  >> RDS >> Mysql

Nelze změnit tabulku, dochází k chybě 1067 Neplatná výchozí hodnota

Nějaké pozadí k sql_mode a 'NO_ZERO_DATE':http:// dev.mysql.com/doc/refman/5.1/en/sql-mode.html

Zmínil jste, že jste obnovili tabulky z jiného serveru. Pokud jste použili mysqldump, pak odpověď na vaši otázku je, že mysql vypnul režim 'NO_ZERO_DATE' při načítání dumpingového SQL. Mysqldump (testováno ve verzi 5.5) umístí tento řádek na začátek výpisu SQL:

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

Při načítání výpisu také vypne kontroly cizích klíčů a další užitečné věci.

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

To vysvětluje, proč jste byli schopni obnovit stoly, ale při pokusu o změnu musíte hrát podle přísnějších pravidel. Pokud to opravdu chcete přepsat, můžete těsně před svou alter tabulkou vyzkoušet následující:

mysql> SET SESSION sql_mode='';

Potom změňte tabulku.




  1. Export sqoop z hdfs do oracle Chyba

  2. Odhadněte úspory komprese dat na serveru SQL Server

  3. Jak analyzovat velký soubor CSV bez vypršení časového limitu?

  4. Knihovna sestav PHP/MySQL