i tried doing this in my previous job where i was testing a storage appliance. The problem with flakey is that it is usually too flakey in the wrong places and causes too harsh an error. You have it set to error every other second which is too harsh for anything but forensic tools.
You need to specify how the device is being flakey, the default is to hard error which is what is preventing you from using it, there are two other options - drop_writes and corrupt_bio_byte
drop writes - will fail all writes but reads succeed
corrupt_bio_byte - is probably what you need as it allows for more subtle breakage that is possible for tools to handle.
The documentation for dmflakey is here
This should generate cause every 32nd byte of each READ that was 1 to be 0
sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0 1 corrupt_bio_byte 32 r 1 0'