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

Kan ikke ændre tabellen, får fejl 1067 Ugyldig standardværdi

Lidt baggrund om sql_mode og 'NO_ZERO_DATE':http:// dev.mysql.com/doc/refman/5.1/en/sql-mode.html

Du nævnte, at du gendannede bordene fra en anden server. Hvis du brugte mysqldump, så er svaret på dit spørgsmål, at mysql deaktiverede 'NO_ZERO_DATE'-tilstand under indlæsning af den dumpede SQL. Mysqldump (testet i 5.5) placerer denne linje øverst i den dumpede SQL:

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

Det deaktiverer også kontrol af fremmednøgle og andre nyttige ting, mens du indlæser dumpet.

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

Dette forklarer, hvorfor du var i stand til at genoprette bordene, men når du forsøger at ændre, skal du spille efter strengere regler. Hvis du virkelig ønsker at tilsidesætte dette, kan du prøve følgende lige før din ændringstabel:

mysql> SET SESSION sql_mode='';

Skift derefter tabel.




  1. Ekko specifikke rækker fra en mysql-database

  2. Hvad er den hurtigste måde at anvende 150M opdateringer på PostgreSQL-tabellen

  3. JPA Pessimistisk lås virker ikke

  4. SQL:opregn returnerede rækker inden for hver gruppe