Mysql
 sql >> Database >  >> RDS >> Mysql

È possibile rilevare il valore non valido in MySQL quando ottengo un errore di vincolo di chiave esterna?

Sfortunatamente non c'è modo migliore per ottenere gli errori di chiave esterna che da LATEST FOREIGN KEY ERROR sezione in SHOW ENGINE INNODB STATUS . Le informazioni sulla colonna vengono stampate come ad esempio:

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

Questo sta stampando l'intero set di colonne dall'indice (fk ), e come hai intuito il formato è:

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

Inoltre, sfortunatamente, InnoDB non sa abbastanza su come vengono archiviati i tipi di colonna di MySQL per darti una rappresentazione stampata ragionevole, quindi alcuni valori sono un po' "strani", ad es. 80000003 è la rappresentazione esadecimale dei byte memorizzati per l'intero 3 (InnoDB capovolge internamente il bit alto).