De
FOREIGN KEY
Restrições
Se você recriar uma tabela que foi descartada, ela deverá ter uma definição que esteja de acordo com as restrições de chave estrangeira que a referenciam. Ele deve ter os nomes e tipos de coluna corretos e deve ter índices nas chaves referenciadas, conforme indicado anteriormente. Se estes não forem satisfeitos, o MySQL retornará o erro número 1005 e se referirá ao erro150 na mensagem de erro.
Minha suspeita é que é porque você não criou
foo
como InnoDB, pois todo o resto parece OK. Editar:da mesma página -
Ambas as tabelas devem ser tabelas InnoDB e não devem ser tabelas TEMPORÁRIAS.