Infelizmente, não há melhor maneira de obter os erros de chave estrangeira do que a partir do
LATEST FOREIGN KEY ERROR
seção em SHOW ENGINE INNODB STATUS
. As informações da coluna são impressas como, por exemplo:Trying to add in child table, in index `fk` tuple:
DATA TUPLE: 2 fields;
0: len 11; hex 4163636573736f72794964; asc AccessoryId;;
1: len 4; hex 80000003; asc ;;
Isso está imprimindo o conjunto completo de colunas do índice (
fk
), e como você adivinhou o formato é:<column index>:
len <length of bytes stored>;
hex <hex representation of bytes>;
asc <ascii representation of bytes>;;
Além disso, infelizmente, o InnoDB não sabe o suficiente sobre como os tipos de coluna do MySQL são armazenados para fornecer uma representação impressa razoável, então alguns dos valores são um pouco "estranhos", por exemplo.
80000003
é a representação hexadecimal dos bytes armazenados para o inteiro 3 (InnoDB inverte internamente o bit alto).