Avatar billede EveryMA Mester
29. april 2015 - 18:35 Der er 12 kommentarer og
1 løsning

mySQL roder rundt med id'er

Hej.
Når jeg opretter ting i min database angiver den automatisk det næste id i rækken i forhold til den seneste post, hvilket er hvad den også skal. Men nu er den helt galt på den.

Jeg rodede lidt med id'erne i morges fordi nogle poster skulle 'bytte plads'. Jeg kom ved et uheld til at skrive 4223 i stedet for 423. Nu kører den så bare videre fra 4223 når jeg laver nye poster. Dvs. den næste bliver 4224. Næste 4225. Næste 4226 osv. I stedet for at køre videre fra 423.

Hvordan kan jeg gå ind og ændre i det?
Avatar billede erikjacobsen Ekspert
29. april 2015 - 18:41 #1
Du skal bare lade det være som det er. Man skal tage de autoincrementede id-felter for hvad de er: unikke tal, men man må ikke antage, at de er fortløbende i den kode man nu skriver bag ved.
Avatar billede EveryMA Mester
29. april 2015 - 18:47 #2
Men indtil nu har jeg jo bare ændret fra 4223 til 423. Og 4224 til 424 automatisk efter hver post... Så noget bør man vel kunne gøre tænker jeg... Selvom det ikke betyder noget som helst så irriterer det mig bare at den har taget det kæmpe hop.. :=)
Avatar billede arne_v Ekspert
29. april 2015 - 18:51 #3
Du boer som Erik siger lade det vaere. Der kommer altid huller paa et tidspunkt.

Hvis du absolut vil spilde din tid saa vil jeg tro at ALTER TABLE dittabelnavn AUTO_INCREMENT = nyvaerdi kan fixe det.
Avatar billede EveryMA Mester
29. april 2015 - 19:59 #4
Jeg har en anden tabel med over 6000 poster. Der er intet hul... så vidt jeg kan læse mig frem til , så kan alter table ikke redegøre det, men måske har du noget kode, der kan ? :-)
Avatar billede arne_v Ekspert
29. april 2015 - 21:03 #5
ALTER TABLE er ikke for at aendre vaerdier men for at fortaelle MySQL hvilken id den skal starte med at tildele automatisk bagefter.
Avatar billede arne_v Ekspert
29. april 2015 - 21:04 #6
Du faar huller i id paa mange maader:
- slette raekker
- transaction rollbacks
- fejl indsaet
Avatar billede EveryMA Mester
29. april 2015 - 21:13 #7
Selvfølgelig kan der komme huller. Men der er forskel at hoppe fra 1 til 3 end 400 til 4000. Det er ikke en bekymring for mig , bare en irritation.

Men tak! alter table virkede problemfrit og den kører videre fra hvor den skal nu.

Jeg forstår ikke hvorfor jeg blev bedt om at lade det være. Altså det er jo op til en selv, personligt, om man vil have et spring på 4000 eller ej, når det kan rettes :-)

Smid gerne svar, arne_v :)
Avatar billede jakobdo Ekspert
29. april 2015 - 21:43 #8
Mysql kører jo med en "intern" næste-nummer.
Så hvis du starter på en "frisk", så vil næste nummer være:
1, 2, 3, 4 osv..
Hvis du så med vilje eller uheld, indsætter, retter et ID til 1000, så vil næste nummer blive "sat" til: 1001 osv...
Så det er jo ret logisk at den gør som den gør.
Avatar billede arne_v Ekspert
30. april 2015 - 04:09 #9
Du skal ikke vaere overrasket over at blive fraraadet at forsoege at holde id'ere strengt sekventielle.

Det er en ret haabloes ide.

Hvis du i et bil forum spurgte om hvor man kunne koebe firkantede hjul, saa ville du nok ogsaa blive fraraadet at goere det.
Avatar billede arne_v Ekspert
30. april 2015 - 04:09 #10
og et svar
Avatar billede EveryMA Mester
30. april 2015 - 09:59 #11
jamen hvorfor er det jeg bliver frarådet at ændre det? det er jo fuldstændig ligegyldigt om den starter fra 1 eller fra 10.00000.0000000. Der er intet i det. Det er personligt. SKal min database starte fra 123 eller 10.550. Det er da bare smagssag?

du kan ikke sammenligne det med at købe firkantede hjul. DÈT er et problem, men at køre sin database fra id 400 fremfor 4000 er jo ikke et problem, bliver aldrig et problem og kan aldrig nogensinde udvikle sig til et problem.

jakabdo - du har nok ret. jeg havde bare ikke tænkt sig på at den ville starte fra det nummer, jeg uheldigvis kom til at skifte den til :-)
Avatar billede arne_v Ekspert
30. april 2015 - 21:57 #12
Der er ikke noget problem ved at lade tabellen starte id med en vaerdi forskellig fra 1 ved oprettelse.

Der er ingen grund til det, men der sker heller ikke noget ved det.

Det er heller ikke det der opponeres imod.

Der opponeres mod ideen med at loebende efter ibrugtagelse at forsoege at holde id'erne sekventielle.

Og det er ikke et spoergsmaal om personlig praeferance.

Det vil ske igen og igen at der kommer huller og kraeve rettelse igen og igen.

Det koster tid at lave den slags og koster derfor penge.

Derfor er det en rigtigt daarlig ide.
Avatar billede EveryMA Mester
01. maj 2015 - 20:49 #13
Tak for yderligere info, Arne :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester