Ja, aktivera läget NO_ZERO_DATE:
SET sql_mode = 'NO_ZERO_DATE';
Beteendet är dokumenterat . Dessutom kanske du vill ställa in läget så att det inkluderar NO_ZERO_IN_DATE...
Se också till att sql_mode inkluderar antingen STRICT_ALL_TABLES eller STRICT_TRANS_TABLES; utan dessa NO_ZERO_IN_DATE ger bara en varning, men infogningen lyckas ändå.
Separata kolumner betyder att de måste kontrolleras individuellt - inget du kan göra åt det.