sql >> Databáze >  >> RDS >> Mysql

Je možné zachytit neplatnou hodnotu v MySQL, když dostanu chybu omezení cizího klíče?

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).




  1. Příkaz Mysql pro výběr odlišných řádků ze dvou sloupců

  2. Příliš mnoho připojení pomocí Hibernate a mysql

  3. mysql escapování jednoduchých a dvojitých uvozovek

  4. Proč je MySQL InnoDB mnohem pomalejší při skenování celé tabulky než MyISAM?