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

ERROR 1833 (HY000):Tidak dapat mengubah kolom MySQL

Karena kunci asing harus cocok dengan tipe data kolom yang direferensikan, masuk akal jika mengubah tipe data kolom kemungkinan akan mengganggu kunci asing yang mereferensikannya.

Tampaknya MySQL memiliki perlindungan terhadap ini, dan menolak upaya untuk MENGUBAH kolom. Tapi itu tidak cukup pintar untuk memeriksa apakah modifikasi spesifik yang Anda buat sebenarnya akan mengubah tipe data. Itu hanya menolak setiap upaya untuk mengubah kolom itu.

Anda dapat mengatasinya dengan menonaktifkan pemeriksaan kunci asing untuk sementara. Saya membuat ulang tabel Anda dan mengonfirmasinya:

mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'favorite_food_ibfk_1' of table 'test.favorite_food'

mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> set foreign_key_checks=1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tanggal default MySQL () + 14 hari, untuk kolom?

  2. MySQL Menjalankan Total dengan COUNT

  3. Tambahkan 2 jam ke waktu saat ini di MySQL?

  4. Tambahkan hasil dari kueri ke baris hasil yang sama di PostgreSQL - Redshift

  5. Kesalahan 1064 di Grafana untuk membuat grafik menggunakan database mysql