Algumas informações sobre sql_mode e 'NO_ZERO_DATE':http:// dev.mysql.com/doc/refman/5.1/en/sql-mode.html
Você mencionou que restaurou as tabelas de outro servidor. Se você usou o mysqldump, a resposta para sua pergunta é que o mysql desativou o modo 'NO_ZERO_DATE' ao carregar o SQL despejado. Mysqldump (testado em 5.5) coloca esta linha no topo do SQL despejado:
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
Ele também desativa as verificações de chave estrangeira e outras coisas úteis ao carregar o dump.
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
Isso explica por que você conseguiu restaurar as mesas, mas ao tentar alterá-las você deve jogar com regras mais rígidas. Se você realmente deseja substituir isso, tente o seguinte antes de alterar a tabela:
mysql> SET SESSION sql_mode='';
Em seguida, altere a tabela.