"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 1215 do MySQL: “Não é possível adicionar restrição de chave estrangeira”?

Por que estou recebendo o erro 1215 do MySQL: “Não é possível adicionar restrição de chave estrangeira”?

Publicado em 2024-11-04
Navegar:160

 Why Am I Getting MySQL Error 1215: \

Erro MySQL 1215: "Não é possível adicionar restrição de chave estrangeira"

Ao tentar criar uma restrição de chave estrangeira no MySQL, é crucial garantir que tanto o campo referenciado quanto o campo de chave estrangeira atendam aos requisitos específicos. Veja como diagnosticar e resolver esse erro:

Consistência do motor

  • O mecanismo "InnoDB" deve ser usado para ambas as tabelas envolvidas.

Tipo e comprimento de dados

  • Os tipos de dados e comprimentos de ambos os campos devem corresponder exatamente. Por exemplo, se o campo referenciado for VARCHAR(20), o campo de chave estrangeira também deverá ser VARCHAR(20).

Collation

  • O agrupamento indica o conjunto de caracteres e as regras de classificação. Ambos os campos devem usar o mesmo agrupamento, como utf8.

Singularidade

  • O campo referenciado deve ser exclusivo, geralmente representado por primário ou exclusivo chaves. O campo de chave estrangeira não pode fazer referência a campos que permitem valores duplicados.

Manipulação nula

  • Certifique-se de não ter definido uma condição SET NULL quando algumas colunas referenciadas são declaradas NOT NULL.

Sintomas Adicionais

Se o erro persistir, execute o comando SHOW ENGINE INNODB STATUS; para revelar detalhes mais específicos.

Instrução incorreta

A instrução SQL fornecida cria uma tabela chamada "curso" com uma restrição de chave estrangeira referenciando a tabela "departamento" no Campo "nome_depto". No entanto, esta afirmação está incorreta porque falta a especificação do tipo de dados para o campo "dept_name". Para corrigir isso, a declaração deve ser modificada da seguinte forma:

create table course (
    course_id varchar(7),
    title varchar(50),
    dept_name varchar(20),
    credits numeric(2,0),
    primary key(course_id),
    foreign key (dept_name) references department(dept_name)
);
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