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

Entrada duplicada '0' para a chave 'PRIMARY'


Isso ocorre quando você tem uma chave primária, mas não fornece um valor de inicialização. A própria inserção está causando a duplicação.

No seu caso, duas possibilidades vêm à mente:

  1. supp_id é a chave primária e declarada como um número. Em versões mais antigas do MySQL, acho que os valores de string são convertidos silenciosamente em números. Como os caracteres iniciais são letras, o valor é 0.

  2. Você tem outro id campo que é a chave primária, mas não recebeu nenhum valor e não foi declarado auto_increment .

EDITAR:

Suspeito que você queira o seguinte código:
CREATE TABLE suppliers (
    supplierId int NOT NULL auto_increment primary key,
    supp_name varchar(255) unique,
    company_name varchar(15) NOT NULL,
    town varchar(15),
    phone varchar(15)
);

INSERT INTO Suppliers(supp_name, company_name, town, phone)
    Values ('ADT217', 'AdTec', 'Birmingham', '0121-368-1597'),
           ('CPS533', 'CPS', 'Maidenhead', '01382-893715'),
           ('FCL162', 'ForComp Ltd', 'Nottingham', '01489-133722'),
           ('KBC355', 'KBC Computers', 'Glasgow', '0141-321-1497');

Algumas notas:
  • Geralmente você deseja varchar() em vez de char() , a menos que você realmente goste de muitos espaços no final das strings.
  • Adicionei um nome de fornecedor exclusivo à tabela e declarei o id como um auto_increment .
  • Aspas simples são padrão ANSI para constantes de string. MySQL (e alguns outros bancos de dados) permitem aspas duplas, mas não há razão para não usar o padrão.