#1062 – Dubbele invoer voor sleutel ‘PRIMARY’

Dus mijn MySQL-database gedraagt zich een beetje raar. Dit is mijn tafel:

Name shares id  price   indvprc
cat   2     4   81      0
goog  4     4   20      20
fb    4     9   20      20

Ik krijg deze #1062-fout wanneer ik probeer in te voegen in de tabel. Dus ik keek er verder naar en realiseerde me dat wanneer ik probeer waarden in de tabel in te voegen, waarin de naam en aandelenwaarden hetzelfde zijn, het de #1062-fout zal retourneren. Als ik bijvoorbeeld heb ingevoegd:

fb    4      6     20   20 

Het zou een fout retourneren. Maar als ik het aandelennummer in 6 zou veranderen, zou het goed werken. Is het vanwege een van mijn kolommen die uniek zou kunnen zijn, of is het gewoon iets met mysql?


Antwoord 1, autoriteit 100%

U moet sharesverwijderen als uw PRIMARY KEYOF UNIQUE_KEY


Antwoord 2, autoriteit 50%

Gebruik SHOW CREATE TABLE your-table-nameom te zien welke kolom isuw primaire sleutel.


Antwoord 3, autoriteit 50%

  1. Zorg ervoor dat PRIMARY KEYis geselecteerd AUTO_INCREMENT.
  2. Schakel gewoon automatisch verhogen in met :
    ALTER TABLE [table name] AUTO_INCREMENT = 1
  3. Als je het insert-commando uitvoert, moet je deze toets overslaan.

Antwoord 4, autoriteit 19%

Ik heb het opgelost door de eigenschap “lock” te wijzigen van “shared” in “exclusive”:

ALTER TABLE `table` 
CHANGE COLUMN `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '' , LOCK = EXCLUSIVE;

Antwoord 5, autoriteit 12%

Wat is de exacte foutmelding? #1062 betekent dubbele invoer die in strijd is met een primaire sleutelbeperking voor een kolom – wat erop neerkomt dat u niet twee dezelfde waarden in de kolom kunt hebben. De foutmelding zou u moeten vertellen welke van uw kolommen beperkt is, ik vermoed “shares”.


Antwoord 6, autoriteit 6%

Waarschijnlijk is dit niet de beste oplossing, maar als u het volgende doet, wordt het probleem opgelost

Stap 1: Maak een databasedump met het volgende commando

mysqldump -u root -p databaseName > databaseName.db

vind de regel

ENGINE=InnoDB AUTO_INCREMENT="*****" DEFAULT CHARSET=utf8;

Stap 2: Verander *******naar max id van uw mysql table id. Bewaar deze waarde.

Stap 3: gebruik opnieuw

mysql -u root -p databaseName < databaseName.db

In mijn geval kreeg ik deze foutmelding toen ik een handmatige invoer toevoegde om gegevens in een andere tabel in te voeren. op een of andere manier moeten we de waarde AUTO_INCREMENTinstellen op max id met het mysql-commando


Antwoord 7

Repareer de database door uw domeinprovider cpanel.

Of kijk of je niet iets hebt samengevoegd in de phpMyAdmin


Antwoord 8

De DB die ik aan het importeren was, had een conflict tijdens het importeren vanwege de aanwezigheid van een kolom voor zowel autoincrement als primaire sleutel.

Het probleem was dat in het .sql-bestand de tabel was opgedeeld in meerdere “INSERT INTO” en tijdens het importeren werden deze query’s allemaal tegelijk uitgevoerd.

MIJN OPLOSSINGwas om de optie “Meerdere zoekopdrachten uitvoeren in elke uitvoering” op Navicat uit te schakelen en het werkte perfect


Antwoord 9

Ik kreeg deze fout van mySQL met behulp van DataNucleus en een database gemaakt met UTF8 – de fout werd veroorzaakt door deze annotatie voor een primaire sleutel:

@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDSTRING)
protected String id;

het laten vallen van de tafel en het opnieuw genereren hiermee heeft het opgelost.

@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDHEX)
protected String id;

Other episodes