ALTER TABLE
altera uma tablea para o conjunto
de caracteres atual. Se você obter um erro de chave duplicada
durante ALTER TABLE
, então a causa é que o
novo conjunto de caracteres mapeia duas chaves para o mesmo
valor ou que a tabela está corrompida, caso no qual você deve
fazer um REPAIR TABLE
na tabela.
Se ALTER TABLE
finalizar com um erro com
este:
Error on rename of './database/name.frm' to './database/B-a.frm' (Errcode: 17)
o problema pode ser que o MySQL falhou em um ALTER
TABLE
anterior e existe uma tabela antiga chamada
A-algumacoisa
ou
B-algumacoisa
. Neste caso, vá até o
diretório de dados do MySQL e delete todos os campos que tenham
nomes iniciando com A-
ou
B-
. (Você pode quere movê-los para algum
lugar em vez de deletá-los.)
ALTER TABLE
funciona do seguinte modo:
Cria uma nova tabela chamada A-xxx
com
as alterações pedidas.
Todos os registros da tabela antiga são copiadas para
A-xxx
.
A tabela antiga é renomeada com B-xxx
.
A-xxx
é renomeada com o nome da sua
tabela antiga.
B-xxx
é deletada.
Se algo der errado com a operação de renomeação, o MySQL
tenta desfazer a mudança. Se algo der seriamente errado (isto
não deve acontecer, é claro), o MySQL pode deixar a tabela
antiga como B-xxx
, mas uma simples
renomeação no nível do sistema deve trazer o seus dados de
volta.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.