sql >> Base de Datos >  >> RDS >> Mysql

Entrada duplicada '0' para la clave 'PRIMARY'

Esto ocurre cuando tiene una clave principal pero no le da un valor de inicialización. La inserción en sí está causando la duplicación.

En tu caso, se me ocurren dos posibilidades:

  1. supp_id es la clave principal y se declara como un número. En versiones anteriores de MySQL, creo que los valores de cadena se convierten silenciosamente en números. Como los caracteres principales son letras, el valor es 0.

  2. Tienes otro id campo que es la clave principal, pero sin valor y no declarado auto_increment .

EDITAR:

Sospecho que desea el siguiente 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');

Algunas notas:

  • Por lo general, desea varchar() en lugar de char() , a menos que realmente le gusten muchos espacios al final de las cadenas.
  • Agregué un nombre de proveedor único a la tabla y declaré que la identificación era un auto_increment .
  • Las comillas simples son estándar ANSI para constantes de cadena. MySQL (y algunas otras bases de datos) permiten comillas dobles, pero no hay razón para no usar el estándar.