Eu preciso alterar um tipo de dados de INT para BIGINT em uma tabela MySQL de 600GB. A coluna possui um índice exclusivo. Eu posso ser bom com INT não assinado, mas presumo que mudar para isso ou BIGINT seja praticamente a mesma dor. O mecanismo da tabela é o InnoDB. O que seria mais fácil:
- ALTERAR A TABELA
- Copiando estrutura e
INSERT INTO (SELECT *)
- Tabela de despejo e alteração das definições da tabela de arquivo de despejo
- Algo mais?
UPDATE: Conforme solicitado, MySQL ver 5.5.15, sem chaves estrangeiras e criar tabela:
CREATE TABLE `tbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`tid` bigint(20) NOT NULL,
`t` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`f` tinyint(1) NOT NULL,
`i_id` bigint(20) NOT NULL,
`ir_id` int(11) NOT NULL,
`r_c` int(11) NOT NULL,
`r` tinyint(1) NOT NULL,
`e` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`t` varchar(5) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user` (`user_id`,`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=1657146169 DEFAULT CHARSET=utf8
ALTER TABLE ONLINE
. Você tem chaves estrangeiras referenciando esta coluna? Ajudaria se você mostrasse a SHOW CREATE TABLE tablename;
saída.