"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que estou recebendo o erro 1022 do MySQL: "Não é possível escrever; chave duplicada na tabela." Mesmo que eu tenha apenas uma chave?

Por que estou recebendo o erro 1022 do MySQL: "Não é possível escrever; chave duplicada na tabela." Mesmo que eu tenha apenas uma chave?

Publicado em 2024-11-07
Navegar:742

 Why Am I Getting MySQL Error 1022: \

Erro 1022 do MySQL: uma colisão de nomes de chaves estrangeiras

Ao tentar criar uma tabela usando MySQL, você encontra o erro 1022: "Não é possível gravar; chave duplicada na mesa." O aspecto peculiar é que a tabela define apenas uma única chave, mas o erro persiste.

Após investigação, parece que um trecho específico dentro da definição da tabela aciona o erro:

CONSTRAINT `error_id`
FOREIGN KEY (`error_id` )
REFERENCES `mydb`.`errors` (`error_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,

Embora existam definições de chave estrangeira semelhantes em outras tabelas sem problemas, o problema está no nome da chave estrangeira: error_id.

A causa raiz:

O problema surge porque um nome de chave estrangeira não pode ser igual a outro nome de chave estrangeira em todo o modelo de banco de dados. Isso significa que se duas tabelas fizerem referência à mesma tabela, as chaves estrangeiras em cada tabela deverão ter nomes exclusivos.

Solução:

Para resolver o erro, basta fornecer o chave estrangeira em questão com um nome diferente. Por exemplo, você poderia chamá-lo de fk_error_id. Isso irá distingui-la de qualquer outra chave estrangeira no modelo e permitir que o MySQL crie a tabela com sucesso.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3