sql >> データベース >  >> RDS >> Mysql

外部キー制約エラーが発生したときにMySQLで無効な値をキャッチすることは可能ですか?

    残念ながら、LATEST FOREIGN KEY ERRORから外部キーエラーを取得するより良い方法はありません。 SHOW ENGINE INNODB STATUSのセクション 。列情報は次のように出力されます:

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

    これは、インデックス(fk)から列の完全なセットを出力しています。 )、そしてあなたが推測したように、フォーマットは次のとおりです:

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

    さらに残念ながら、InnoDBは、MySQLの列タイプがどのように格納されているかを十分に認識していないため、適切な印刷表現を提供できません。そのため、一部の値は少し「奇妙」です。 80000003 整数3に格納されているバイトの16進表現です(InnoDBは内部で上位ビットを反転します)。




    1. SQLグループごとの既存の列の数に基づいて新しい列の値を作成するにはどうすればよいですか?

    2. mysqlの最後の挿入IDの取得はトランザクションでどのように機能しますか? +トランザクションの質問

    3. ユニオンおよびCLOBフィールドで選択を使用する場合のエラーORA-00932

    4. WordPressの単一エンドポイントで高可用性PostgreSQLをデプロイする方法