sql >> Databasteknik >  >> RDS >> Mysql

Är det möjligt att fånga det ogiltiga värdet i MySQL när jag får ett fel med en främmande nyckel?

Tyvärr finns det inget bättre sätt att få fram de främmande nyckelfelen än från LATEST FOREIGN KEY ERROR avsnitt i SHOW ENGINE INNODB STATUS . Kolumninformationen skrivs ut som t.ex.:

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     ;;

Detta är att skriva ut hela uppsättningen kolumner från indexet (fk ), och som du gissade är formatet:

<column index>:
  len <length of bytes stored>;
  hex <hex representation of bytes>;
  asc <ascii representation of bytes>;;

Dessutom vet tyvärr inte InnoDB tillräckligt om hur MySQL:s kolumntyper lagras för att ge dig en rimlig utskriven representation, så vissa av värdena är lite "konstiga" t.ex. 80000003 är hex-representationen av byte lagrade för heltal 3 (InnoDB vänder internt den höga biten).




  1. Hur INSERT()-funktionen fungerar i MariaDB

  2. Installera AdventureWorks-databasen Samples i Microsoft SQL Server 2012

  3. Anropa MySQL-funktioner i litium

  4. Returnera endast numeriska värden i MariaDB