solucion siguiente producido primary guardar for fallo error entry duplicate con code mysql phpmyadmin sql-insert

siguiente - mysql error 1062 duplicate entry for key primary solucion



Entrada duplicada ''0'' para la clave ''PRIMARY'' (2)

No entiendo por qué recibo este error al intentar completar esta tabla. No hay nada en la mesa en este momento, así que no entiendo por qué habría un duplicado ...

Este es el código que estoy usando:

INSERT INTO Suppliers (supp_id,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");

Cualquier ayuda sería muy apreciada,

Gracias.

tabla de proveedores ...

CREATE TABLE suppliers( supp_id int NOT NULL, company_name character(15) NOT NULL, town character(15) phone character(15) primary key(supp_id) );


Con su tabla puede obtener el error como "Valor entero incorrecto", pero dependiendo de la configuración del servidor MySQL puede hacer la conversión (cadena-> int) automáticamente para su cadena de consulta debe convertirse en "0" como resultado de esto hace 2 filas con 0 como supp_id y obtener error Duplicar la entrada ''0'' para la clave ''PRIMARY'' . Supongo que está utilizando InnoDB como tipo de tabla, en este caso la consulta se ejecutará como transacción y se retrotraerá después del primer error (para este ejemplo será la segunda fila).

DROP TABLE suppliers; -- Will drop your old table CREATE TABLE suppliers( supp_id varchar(30) NULL, -- You can set length as you wish company_name character(15) NOT NULL, town character(15), phone character(15), primary key(supp_id) ); INSERT INTO Suppliers (supp_id,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");

Después de cambiar el tipo de inserción, funcionará sin problemas.


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

En tu caso, dos posibilidades vienen a la mente:

  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 personajes principales son letras, el valor es 0.

  2. Tiene otro campo de id Que es la clave principal, pero no le da ningún valor ni ha declarado auto_increment .

EDITAR:

Sospecho que quieres 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:

  • Normalmente quiere varchar() lugar de char() , a menos que realmente le gusten muchos espacios al final de las cadenas.
  • auto_increment un nombre de proveedor único a la tabla y declaro que el id es un auto_increment .
  • Las comillas simples son estándares ANSI para constantes de cadena. MySQL (y algunas otras bases de datos) permiten comillas dobles, pero no hay ninguna razón para no usar el estándar.