Аналогично this
Вы также можете попробовать добавить новый столбец с unsigned BIGINT
ALTER TABLE `$tblNm`
ADD COLUMN new_column BIGINT UNSIGNED AFTER flgs;
Затем обновите приведенные значения в новом с помощью cast
UPDATE `$tblNm`
SET new_column=CAST(flgs AS UNSIGNED);
Затем удалите столбец flgs
ALTER TABLE `$tblNm`
DROP COLUMN flgs;
Переименуйте новый столбец с помощью flgs
ALTER TABLE `$tblNm`
CHANGE COLUMN new_column flgs BIGINT UNSIGNED
EDIT Чтобы выполнить это в транзакциях, мы можем обновить это следующим образом.
SET autocommit=0;
START TRANSACTION;
ALTER TABLE `$tblNm`
ADD COLUMN new_column BIGINT UNSIGNED AFTER flgs;
UPDATE `$tblNm`
SET new_column=CAST(flgs AS UNSIGNED);
ALTER TABLE `$tblNm`
DROP COLUMN flgs;
ALTER TABLE `$tblNm`
CHANGE COLUMN new_column flgs BIGINT UNSIGNED;
COMMIT;
EDIT-2 Если есть необходимо заблокировать таблицы перед началом транзакции, приведенный выше скрипт будет изменен на
SET autocommit=0;
LOCK TABLES `$tblNm` WRITE
ALTER TABLE `$tblNm`
ADD COLUMN new_column BIGINT UNSIGNED AFTER flgs;
UPDATE `$tblNm`
SET new_column=CAST(flgs AS UNSIGNED);
ALTER TABLE `$tblNm`
DROP COLUMN flgs;
ALTER TABLE `$tblNm`
CHANGE COLUMN new_column flgs BIGINT UNSIGNED;
COMMIT;
UNLOCK TABLES;
В этом случае вам не нужно явно писать START TRANSACTION