Oui, activez le mode NO_ZERO_DATE :
SET sql_mode = 'NO_ZERO_DATE';
Le comportement est documenté . De plus, vous pouvez également définir le mode pour inclure NO_ZERO_IN_DATE...
Assurez-vous également que sql_mode inclut STRICT_ALL_TABLES ou STRICT_TRANS_TABLES ; sans ces NO_ZERO_IN_DATE ne donnent qu'un avertissement, mais l'insertion réussit toujours.
Des colonnes séparées signifient qu'elles doivent être vérifiées individuellement - vous ne pouvez rien y faire.