sql >> Base de Datos >  >> RDS >> Mysql

¿Es posible detectar el valor no válido en MySQL cuando aparece un error de restricción de clave externa?

Desafortunadamente, no hay mejor manera de obtener los errores de clave externa que desde el LATEST FOREIGN KEY ERROR sección en SHOW ENGINE INNODB STATUS . La información de la columna se imprime como por ejemplo:

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

Esto está imprimiendo el conjunto completo de columnas del índice (fk ), y como habrás adivinado, el formato es:

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

Además, lamentablemente, InnoDB no sabe lo suficiente sobre cómo se almacenan los tipos de columna de MySQL para brindarle una representación impresa razonable, por lo que algunos de los valores son un poco "extraños", p. 80000003 es la representación hexadecimal de los bytes almacenados para el número entero 3 (InnoDB cambia internamente el bit alto).