Tenho uma tabela user_interactions
com 4 colunas:
user_1
user_2
type
timestamp
A chave primária é (user_1,user_2,type)
e eu quero mudar para(user_2,user_1,type)
Então o que eu fiz foi:
drop primary key ...
add primary key (user_2,user_1,type)...
e voila ...
O problema é que o banco de dados está ativo em um servidor.
Portanto, antes que eu pudesse atualizar a chave primária, muitas duplicatas já se insinuaram e estão continuamente entrando.
O que fazer?
O que quero fazer agora é remover as duplicatas e manter as que estão com as mais recentes timestamp
(que é uma coluna da tabela).
E então, de alguma forma, atualize a chave primária novamente.
mysql
primary-key
simplfuzz
fonte
fonte
Respostas:
Da próxima vez, use uma única instrução "alter table" para atualizar a chave primária.
Para consertar as coisas:
O bloqueio deve impedir que novas atualizações entrem enquanto você estiver fazendo isso. Quanto tempo isso leva obviamente depende do tamanho da sua mesa.
O principal problema é se você tem algumas duplicatas com o mesmo carimbo de data / hora.
fonte
Se a chave primária for um valor de incremento automático, você deve remover o incremento automático, então descartar a chave primária e então adicionar novamente o incremento automático
em seguida, adicione de volta o incremento automático
em seguida, defina o incremento automático de volta ao valor anterior
fonte
Você também pode usar a
IGNORE
palavra-chave, por exemplo:fonte