If this is a common problem, you should have some sort of "dead letter queue" where events like this can be held until your data model is updated to accept them.
Yep, I keep the dead events around, for when the constraints behave incorrectly.
I also keep the live events around, in case there isn't a constraint exception, but something else goes wrong - upstream/user error causing deletion, or programmer error causing the event to have the wrong effect.
Now I have the events, I can just throw away the schemas and constraints. I mean, if the events and the DB disagree, the DB is wrong.