O MySQL por padrão tenta forçar valores inválidos para uma coluna para o tipo correto. Aqui, a string vazia
''
é do tipo string, que não é um inteiro nem NULL. Sugiro seguir os seguintes passos:- Altere a consulta para o seguinte:
INSERT INTO foo (bar) VALUES (NULL);
- Ative o modo estrito no MySQL. Isso evita que ocorram muitas conversões inesperadas de tipo e valor. Você verá mais mensagens de erro quando tentar fazer algo que o MySQL não espera, o que ajuda a identificar problemas mais rapidamente.