Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Problemer med mysql database etter sletting


Anbefalte innlegg

Hei,

 

Jeg har en database som jeg oppdaterer fra nettet. Etter jeg prøvde meg på en funksjon for sletting av valgfri data i denne oppstod det en del problemer. Etter sletting fikk jeg problemer med å oppdatere databasen med nye data. Grunnen til dette oppdaget jeg da jeg gjorde det "manuelt" fra dos:

 

Fikk følgende feilmelding:

 

ERROR 1062: Duplicate entry '127' for key 1

 

Autoincrement fungerer altså ikke når jeg setter inn verdier med tom '' - verdi i nøkkelfeltet. Dette gikk fint før. Nå må jeg selv skrive inn en verdi i id feltet. (Nå 128 -> neste feilmelding = Duplicate entry '128' ...)

 

Noen som har hatt dette problemet og funnet en løsning på det?

 

Edit: Er en MySql database som oppdateres med PHP kode... Glemte å skrive det... Pinlig :-/

 

[ Denne Melding var redigert av: Herr_Dude på 2002-12-08 23:53 ]

Lenke til kommentar
Videoannonse
Annonse

Det som er interessant, er typen på id-feltet? På meg virkar det som det er av typen tinyint, og difor ikkje kan halde meir enn 128 postar, etter det eg huskar. Prøv å kjøre "ALTER TABLE users CHANGE COLUMN id id INT UNIQUE PRIMARY KEY auto_increment", og sjå om ting endrar seg. :smile:

 

Tillegg; kva query bruker du for å sette inn data?

 

_________________

Vegard A. Larsen,

[email protected],

www.sourcecode.no

 

[ endret av kilogram den 2002-12-09 11:29 ]

Lenke til kommentar

Takk skal dere ha!

At dette var problemet slo meg aldri, da problemet oppstod like etter jeg hadde slettet en post fra databasen...Den fortsetter jo også bare å telle oppover istedet for å "fylle inn" så... Var litt fastlåst i min tankegang :smile: .

 

Endret nå id med kommandoen: "ALTER TABLE table modify id INTEGER NOT NULL;" og nå ser det ut til å fungere :smile: .

 

Takk igjen

Lenke til kommentar

Hmm si meg, er det mulig i mysql å få den til å bruke siste ubrukte key? At man har i dette tilfellet tiny int unsigned som Id og som er primary key. Hvis man sletter en record så hadde det jo vært flott om key counteren ikke økte, men at den ble siste ledige Id. Eller må man kanskje holde styr på det selv i PHP og la være å bruke auto_increment?

Lenke til kommentar

Quote:


alexholm skrev (2002-12-09 16:28):

Hmm si meg, er det mulig i mysql å få den til å bruke siste ubrukte key? At man har i dette tilfellet tiny int unsigned som Id og som er primary key. Hvis man sletter en record så hadde det jo vært flott om key counteren ikke økte, men at den ble siste ledige Id. Eller må man kanskje holde styr på det selv i PHP og la være å bruke auto_increment?


 

Nei, du kan ikkje sette mySQL til å gjere dette, såvidt eg veit. Kvifor vil du det? Om du t.d. refererer nyhetsartiklar etter id-nummeret, og sletter ein artikkel, så er det greit at ein veit at her var det ein gong ein artikkel. Det er ikkje alltid det er hensiktsmessig å slette ein artikkel heller, det kan vere gonger ein berre sett eit felt i tabellen, som seier "ikkje vis denne".

 

Vidare, så er det mogleg, men vanskeleg å gjere det i PHP. Ein kan ikkje hente ut det lågaste id-nummeret som ikkje er i bruk utan mykje rekning. Måten mySQL gjer denne indekseringa på er eigentleg ganske velgjennomtenkt, og om du nyttar INT som type på alle id-felt, så har du nok å utvide med i lang tid framover. :smile:

Lenke til kommentar

Quote:


Den 2002-12-09 17:16, skrev kilogram:

Nei, du kan ikkje sette mySQL til å gjere dette, såvidt eg veit. Kvifor vil du det?


 

Var ikke spesiell grunn til det, var bare at jeg kom til å tenke på at access/m$ sql'en har støtte for dette. (Hvis jeg ikke husker feil)

 

Quote:


og om du nyttar INT som type på alle id-felt, så har du nok å utvide med i lang tid framover.


 

Jo, det er vel sikkert greiest sånn :grin:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...