Tak, włącz tryb NO_ZERO_DATE:
SET sql_mode = 'NO_ZERO_DATE';
Zachowanie jest udokumentowane . Dodatkowo możesz także ustawić tryb tak, aby zawierał NO_ZERO_IN_DATE...
Upewnij się również, że sql_mode zawiera STRICT_ALL_TABLES lub STRICT_TRANS_TABLES; bez nich NO_ZERO_IN_DATE daje tylko ostrzeżenie, ale wstawianie nadal się powiedzie.
Oddzielne kolumny oznaczają, że muszą być sprawdzane indywidualnie — nic nie możesz na to poradzić.