Eu tenho um programa que troca regularmente uma partição com uma tabela.
MyTable
é uma tabela particionada e MyTableTemplate
é uma cópia vazia dessa tabela, com a mesma estrutura, mas sem particionamento.
O processo é o seguinte:
CREATE TABLE tmp LIKE MyTableTemplate;
INSERT INTO tmp VALUES (...);
// more inserts...
ALTER TABLE MyTable EXCHANGE PARTITION p1 WITH TABLE tmp;
DROP TABLE tmp;
Funcionou bem até agora, até que precisei adicionar uma coluna à tabela:
ALTER TABLE MyTable ADD COLUMN someColumn TINYINT(1) UNSIGNED NULL DEFAULT NULL;
ALTER TABLE MyTableTemplate ADD COLUMN someColumn TINYINT(1) UNSIGNED NULL DEFAULT NULL;
Agora quando executo EXCHANGE PARTITION WITH TABLE
, recebo a seguinte mensagem:
Erro geral: 1731 Atributo não correspondente 'INSTANT COLUMN(s)' entre partição e tabela
Estranhamente, se eu não adicionar a coluna na última posição:
ALTER TABLE ... ADD COLUMN ... AFTER someField;
...então a troca de partição funciona bem!
O que é esse " INSTANT COLUMN(s)
atributo" e o que fiz de errado?
Isso é um inseto? Estou usando o MySQL 8.0.12.
Especifique
ALGORITHM=INPLACE
(ouALGORITHM=COPY
se no local não for compatível com o mecanismo da sua tabela) naALTER TABLE
instrução explicitamente.