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.