Fair enough ! But even then could it have let's say a place for record the last foreign key violation ?
Only one place will be better than nothing, it can be overwritten every time a foreign key is found and at least we could have a message like this: "FOREIGN KEY constraint failed (x : last = (offending table, offending field) || (constraint name))" Where "x" is the number of violations and the last violation recorded, this way at least we can start solving then one by one (probably in most cases will be only one). Cheers !