Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

LỖI 1833 (HY000):Không thể thay đổi cột MySQL

Vì các khóa ngoại phải khớp với kiểu dữ liệu của cột mà chúng tham chiếu, nên việc thay đổi kiểu dữ liệu của cột có thể làm đảo lộn khóa ngoại tham chiếu đến nó.

Có vẻ như MySQL có biện pháp bảo vệ chống lại điều này và từ chối nỗ lực SỬA ĐỔI cột. Nhưng nó không đủ thông minh để kiểm tra xem liệu sửa đổi cụ thể bạn đang thực hiện có thực sự thay đổi kiểu dữ liệu hay không. Nó chỉ phủ nhận mọi nỗ lực sửa đổi cột đó.

Bạn có thể giải quyết vấn đề này bằng cách tạm thời tắt kiểm tra khóa ngoại. Tôi đã tạo lại bảng của bạn và xác nhận nó:

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. Hiệu suất MySQL của trường varchar duy nhất so với bigint duy nhất

  2. Chèn một đối tượng datetime.datetime trong Python vào MySQL

  3. [MySQL]:XÓA các hàng khỏi hai bảng phụ thuộc

  4. MySql chọn định dạng, cột tròn

  5. Truy vấn các hàng nối trong SQL