Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ERRO 1833 (HY000):Não é possível alterar a coluna MySQL


Como as chaves estrangeiras devem corresponder ao tipo de dados da coluna a que fazem referência, faz sentido que a alteração do tipo de dados de uma coluna possa perturbar a chave estrangeira que a referencia.

Parece que o MySQL tem uma proteção contra isso e nega uma tentativa de MODIFICAR a coluna. Mas não é inteligente o suficiente para verificar se a modificação específica que você está fazendo irá de fato alterar o tipo de dados. Apenas nega qualquer tentativa de modificar essa coluna.

Você pode contornar isso desativando temporariamente as verificações de chave estrangeira. Eu recriei sua tabela e confirmei:
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;