Fix. Every problem was first reproduced with a real attack on the database, then fixed and attacked again: 16 of 16 checks showed the problem before and none after, while 20 of 20 normal actions still work. The data migration stops without changing anything if it meets broken rows and names them, and past abuse, such as a £0 booking, goes on a list for the owner.