Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Código de erro:1005. Não é possível criar a tabela '...' (errno:150)


Código de erro:1005 -- há uma referência de chave primária errada em seu código

Geralmente é devido a um campo de chave estrangeira referenciado que não existe. Pode ser que você tenha um erro de digitação ou verifique se deve ser o mesmo, ou há uma incompatibilidade de tipo de campo. Os campos vinculados a chave estrangeira devem corresponder exatamente às definições.

Algumas causas conhecidas podem ser:
  1. O tipo e/ou tamanho dos dois campos-chave não corresponde exatamente. Por exemplo, se um for INT(10) o campo chave precisa ser INT(10) também e não INT(11) ou TINYINT . Você pode querer confirmar o tamanho do campo usando SHOW CREATE TABLE porque o Query Browser às vezes mostrará visualmente apenas INTEGER para ambos INT(10) e INT(11) . Você também deve verificar se não está SIGNED e o outro é UNSIGNED . Ambos precisam ser exatamente iguais.
  2. Um dos campos de chave que você está tentando fazer referência não tem um índice e/ou não é uma chave primária. Se um dos campos do relacionamento não for uma chave primária, você deverá criar um índice para esse campo.
  3. O nome da chave estrangeira é uma duplicata de uma chave já existente. Verifique se o nome de sua chave estrangeira é exclusivo em seu banco de dados. Basta adicionar alguns caracteres aleatórios ao final do nome da chave para testar isso.
  4. Uma ou ambas as suas tabelas são MyISAM tabela. Para usar chaves estrangeiras, as tabelas devem ser InnoDB . (Na verdade, se ambas as tabelas forem MyISAM então você não receberá uma mensagem de erro - ele simplesmente não criará a chave.) No Query Browser, você pode especificar o tipo de tabela.
  5. Você especificou uma cascata ON DELETE SET NULL , mas o campo-chave relevante é definido como NOT NULL . Você pode corrigir isso alterando sua cascata ou configurando o campo para permitir NULL valores.
  6. Certifique-se de que as opções Charset e Collate sejam as mesmas tanto no nível da tabela quanto no nível do campo individual para as colunas-chave.
  7. Você tem um valor padrão (ou seja, default=0) em sua coluna de chave estrangeira
  8. Um dos campos no relacionamento faz parte de uma chave de combinação (composta) e não possui seu próprio índice individual. Mesmo que o campo tenha um índice como parte da chave composta, você deve criar um índice separado apenas para esse campo de chave para usá-lo em uma restrição.
  9. Você tem um erro de sintaxe em seu ALTER ou você digitou incorretamente um dos nomes de campo no relacionamento
  10. O nome da sua chave estrangeira excede o comprimento máximo de 64 caracteres.

Para obter mais detalhes, consulte:Erro MySQL número 1005 Não é possível criar tabela