sql >> Database teknologi >  >> RDS >> Mysql

FEJL 1833 (HY000):Kan ikke ændre kolonne MySQL

Fordi fremmednøgler skal matche datatypen for den kolonne, de refererer til, giver det mening, at ændring af datatypen for en kolonne sandsynligvis vil forstyrre den fremmednøgle, der refererer til den.

Det ser ud til, at MySQL har en beskyttelse mod dette, og afviser et forsøg på at MODIFICERE kolonnen. Men det er ikke smart nok at tjekke, om den specifikke ændring, du laver, faktisk vil ændre datatypen. Den afviser blot ethvert forsøg på at ændre den kolonne.

Du kan omgå dette ved midlertidigt at deaktivere kontrol af fremmednøgle. Jeg genskabte din tabel og bekræftede den:

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. Hvordan indstilles applikationsnavnet i en Postgresql JDBC url?

  2. Hvordan synkroniseres to tabeller med forskellige MySQL-databaser på den samme maskine?

  3. Sporing på kolonneniveau og rækkeniveau i fletningsreplikering

  4. Sådan indstilles isolationsniveau