Как изменить первичный ключ MySQL с подписанного на неподписанный?

В моей базе данных MySQL InnoDB с внешними ключами я случайно сделал некоторые из своих первичных ключей подписанными, а не беззнаковыми, как мне хотелось бы.

Теперь я хочу изменить его с помощью инструкции ALTER TABLE, но это не работает:

ALTER TABLE `users` CHANGE `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT

Ошибка MySQL:

Error on rename of './db_dev/#sql-478_3' to './db_dev/users' (errno: 150)

Я не понимаю, почему. Я работаю с внешними ключами и пытался использовать оператор

SET foreign_key_checks = 0;

перед выполнением ALTER TABLE сверху. Тоже не работает. Примечание: все мои столы по-прежнему пусты. В нем пока нет данных.

Поскольку в базе данных много таблиц, было бы очень сложно удалить все внешние ключи, а затем снова добавить их вручную. (если это должно быть причиной).

13
задан Norwald2 31 May 2012 в 12:22
поделиться