sql >> Databasteknik >  >> RDS >> Mysql

Dubblettpost '0' för nyckel 'PRIMÄR'

Detta inträffar när du har en primärnyckel men inte ger den ett initialiseringsvärde. Insatsen i sig orsakar dupliceringen.

I ditt fall kommer två möjligheter att tänka på:

  1. supp_id är den primära nyckeln och deklareras som ett tal. I äldre versioner av MySQL tror jag att strängvärdena konverteras tyst till siffror. Eftersom de inledande tecknen är bokstäver är värdet 0.

  2. Du har ett annat id fält som är primärnyckeln, men som inte ges något värde och inte deklarerats auto_increment .

EDIT:

Jag misstänker att du vill ha följande kod:

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');

Några anteckningar:

  • Vanligtvis vill du ha varchar() istället för char() , såvida du inte verkligen gillar många mellanslag i slutet av strängar.
  • Jag lade till ett unikt leverantörsnamn i tabellen och deklarerade id:t som ett auto_increment .
  • Enstaka citattecken är ANSI-standard för strängkonstanter. MySQL (och vissa andra databaser) tillåter dubbla citattecken, men det finns ingen anledning att inte använda standarden.


  1. Basklass och härledda objektvarianter

  2. Hur väljer jag 100 slumpmässiga poster från databasen i Django?

  3. Grundläggande MySQL-frågor

  4. OR stöds inte med CASE Statement i SQL Server