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;