Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah mungkin untuk menangkap nilai yang tidak valid di MySQL ketika saya mendapatkan kesalahan batasan kunci asing?

Sayangnya tidak ada cara yang lebih baik untuk mendapatkan kesalahan kunci asing selain dari LATEST FOREIGN KEY ERROR bagian di SHOW ENGINE INNODB STATUS . Informasi kolom dicetak sebagai misalnya:

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

Ini mencetak set kolom lengkap dari indeks (fk ), dan seperti yang Anda tebak formatnya adalah:

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

Lebih lanjut sayangnya, InnoDB tidak cukup tahu tentang bagaimana tipe kolom MySQL disimpan untuk memberi Anda representasi tercetak yang masuk akal, jadi beberapa nilainya agak "aneh" mis. 80000003 adalah representasi hex dari byte yang disimpan untuk bilangan bulat 3 (InnoDB membalik bit tinggi secara internal).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan kueri gabungan untuk 4 tabel di Rails

  2. mendapatkan hitungan dari kolom yang sama di tabel mysql?

  3. EF Core - Tabel '*.__EFMigrationsHistory' tidak ada

  4. Waktu pembuatan tabel Innodb

  5. Apa itu Resource#?