Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, den ungültigen Wert in MySQL abzufangen, wenn ich einen Foreign Key Constraint-Fehler erhalte?

Leider gibt es keinen besseren Weg, um die Fremdschlüsselfehler zu erhalten, als den LATEST FOREIGN KEY ERROR Abschnitt in SHOW ENGINE INNODB STATUS . Die Spalteninformationen werden z. B. wie folgt gedruckt:

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

Dies druckt den vollständigen Spaltensatz aus dem Index (fk ), und wie Sie erraten haben, ist das Format:

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

Außerdem weiß InnoDB leider nicht genug darüber, wie die Spaltentypen von MySQL gespeichert werden, um Ihnen eine vernünftige gedruckte Darstellung zu geben, daher sind einige der Werte etwas "seltsam", z. 80000003 ist die Hex-Darstellung der Bytes, die für die Ganzzahl 3 gespeichert sind (InnoDB dreht intern das High-Bit um).