sql >> Database teknologi >  >> RDS >> Mysql

Dubleret indtastning '0' for nøglen 'PRIMÆR'

Dette sker, når du har en primær nøgle, men ikke giver den en initialiseringsværdi. Indsatsen i sig selv forårsager duplikeringen.

I dit tilfælde dukker to muligheder op:

  1. supp_id er den primære nøgle og erklæret som et tal. I ældre versioner af MySQL tror jeg, at strengværdierne stille og roligt bliver konverteret til tal. Fordi de foranstående tegn er bogstaver, er værdien 0.

  2. Du har et andet id felt, der er den primære nøgle, men uden værdi og ikke erklæret auto_increment .

EDIT:

Jeg formoder, at du vil have følgende kode:

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

Nogle bemærkninger:

  • Normalt vil du have varchar() i stedet for char() , medmindre du virkelig kan lide mange mellemrum for enden af ​​strenge.
  • Jeg tilføjede et unikt leverandørnavn til tabellen og erklærede id'et som en auto_increment .
  • Enkelte anførselstegn er ANSI-standard for strengkonstanter. MySQL (og nogle andre databaser) tillader dobbelte anførselstegn, men der er ingen grund til ikke at bruge standarden.


  1. Tilslutning til Amazon RDS-instans gennem EC2-instans ved hjælp af MySQL Workbench

  2. Hvordan opretter jeg en fremmednøgle i SQL Server?

  3. Find alle forespørgsler, der bruger en bestemt tabel

  4. MySQL FEJL 1045 (28000):Adgang nægtet for brugeren 'bill'@'localhost' (ved hjælp af adgangskode:JA)