Bohužel neexistuje lepší způsob, jak získat chyby cizího klíče, než z LATEST FOREIGN KEY ERROR
sekce v SHOW ENGINE INNODB STATUS
. Informace o sloupci se vytisknou jako např.:
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 ;;
Toto je tisk celé sady sloupců z indexu (fk
), a jak jste uhodli, formát je:
<column index>:
len <length of bytes stored>;
hex <hex representation of bytes>;
asc <ascii representation of bytes>;;
Dále bohužel InnoDB neví dost o tom, jak se ukládají typy sloupců MySQL, aby vám poskytl rozumnou tištěnou reprezentaci, takže některé hodnoty jsou trochu „divné“, např. 80000003
je hexadecimální reprezentace bajtů uložených pro celé číslo 3 (InnoDB interně převrací horní bit).