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 shares
verwijderen als uw PRIMARY KEY
OF UNIQUE_KEY
Antwoord 2, autoriteit 50%
Gebruik SHOW CREATE TABLE your-table-name
om te zien welke kolom isuw primaire sleutel.
Antwoord 3, autoriteit 50%
- Zorg ervoor dat
PRIMARY KEY
is geselecteerdAUTO_INCREMENT
. - Schakel gewoon automatisch verhogen in met :
ALTER TABLE [table name] AUTO_INCREMENT = 1
- 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_INCREMENT
instellen 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;