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:
-
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. -
Tienes otro
id
campo que es la clave principal, pero sin valor y no declaradoauto_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 dechar()
, 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.