Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É possível capturar o valor inválido no MySQL quando recebo um erro de restrição de chave estrangeira?


Infelizmente, não há melhor maneira de obter os erros de chave estrangeira do que a partir do LATEST FOREIGN KEY ERROR seção em SHOW ENGINE INNODB STATUS . As informações da coluna são impressas como, por exemplo:
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     ;;

Isso está imprimindo o conjunto completo de colunas do índice (fk ), e como você adivinhou o formato é:
<column index>:
  len <length of bytes stored>;
  hex <hex representation of bytes>;
  asc <ascii representation of bytes>;;

Além disso, infelizmente, o InnoDB não sabe o suficiente sobre como os tipos de coluna do MySQL são armazenados para fornecer uma representação impressa razoável, então alguns dos valores são um pouco "estranhos", por exemplo. 80000003 é a representação hexadecimal dos bytes armazenados para o inteiro 3 (InnoDB inverte internamente o bit alto).