Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da se ne resetuje auto_increment u INNODB-u?

[es] :: MySQL :: Kako da se ne resetuje auto_increment u INNODB-u?

[ Pregleda: 1691 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zgas

Član broj: 74613
Poruke: 334
*.ptt.rs.

Sajt: odbrojavanje.com


Profil

icon Kako da se ne resetuje auto_increment u INNODB-u?21.06.2009. u 18:43 - pre 179 meseci
Imam INNODB tabelu a auto increment primarnim kljucem. Ako izbrisem redove primarnim kljucem 1,2,3..., nakon resetovanja baze kad insertujem neku kolonu primarni kljuc opet pocinje od 1. Kako ovo ONEMOGUCITI? Odnosno kako da posle resetovanja servera upis auto incrementa nastavi od maksimalne vrednosti koja je dostignuta pre brisanja redova?

Napominjem da kao korisnik nemam pravo da menjam parametre i postavke mysql-a.
Krajnja mi je opcija da koristim MYISAM tabelu, ako ona ne resetuje automatski auto_increment vrednost?
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

tarla

Član broj: 15527
Poruke: 1648



+42 Profil

icon Re: Kako da se ne resetuje auto_increment u INNODB-u?21.06.2009. u 21:40 - pre 179 meseci
Šta podrazumjevaš pod "restartom baze"?

Ako radiš export/import sql fajla provjeri da li je u exportu sadržano auto_increment = xxx jer to "govori" bazi odakle da krene auto inc. polje...


 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.rs.

Sajt: odbrojavanje.com


Profil

icon Re: Kako da se ne resetuje auto_increment u INNODB-u?21.06.2009. u 22:02 - pre 179 meseci
Baza mi je na lokalnom racunaru, a kada ugasim pa upalim racunar, MYSQL za svaku INNODB tabelu auto increment vrednost setuju prema onome sto zateknu u tabelama. Ako su tabele ispraznjene, pri restartu sistema autoincrement ce da bude setovan opet na 1.

Mozete samo zamisliti, kakve ovo sve probleme moze da napravi u nekoj kompleksnijoj bazi podataka... Za mene to vrlo komplikuje stvar tako da sam u iskusenju da iskljuctim auto increment kod tih tabela i da ga izracunavam manuelno pri insertu, ovo mi za 30% povecava broj upita, a ne znam i da li ce iskljucivanje auto incrementa na neki nacin dovesti u pitanje zakljucavanje redova INNODB tabela pri SQL operacijama...?
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Kako da se ne resetuje auto_increment u INNODB-u?22.06.2009. u 07:29 - pre 179 meseci
InnoDB ne cuva vrednost auto_increment polja u tabeli kao sto to cini myisam. Svaki put kada ugasis server innodb zaboravi te vrednost, svaki put kada upalis server innodb setuje auto_increment vrednosti na max(auto_inc_kolona)+auto_inc_increment
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Kako da se ne resetuje auto_increment u INNODB-u?22.06.2009. u 07:36 - pre 179 meseci
da .. da upotpunim odgovor
- da myisam bi ti resio problem posto on cuva vrednost za autoincrement u tabeli tako da ako restartujes server on nastavlja tamo gde je stigao
- nema nacina da se innodb-u kaze da "cuva" auto_inc vrednosti

razlog zasto innodb ne cuva poziciju auto increment countera je jednostavna, ako imas ID 1,2,3 pa obrises 2 i 3 .. ne postoji nikakav razlog zasto sledeci ID ne bi bio 2 (zasto bi bio 4?) ako je baza modelirana kako treba. Sta to znaci .. ti ako imas taj id na "jos nekom mestu" .. sada ti je problem da ako si obrisao id 2 pa ga upises ponovo on ima relaciju sa "Starim podacima koji su bili id2" .. ako ti je to problem, to znaci da ti nije baza ok, ili si trebao da pobijes i te "druge podatke" koji su vezani za ID 2 koji si obrisao, ili nisi trebao da obrises slog sa ID2 nego da ga "markiras" ... iz tog prostog razloga, innodb ne cuva vrednost auto inc countera u samoj tabeli....

myisam cuva iz prostog razloga sto myisam nema relacije izmedju tabela te se ne podrazumeva da je model normalizovan / podrazumeva da se sve radi iz software-a pa takav rad olaksava koliko moze
 
Odgovor na temu

zgas

Član broj: 74613
Poruke: 334
*.ptt.rs.

Sajt: odbrojavanje.com


Profil

icon Re: Kako da se ne resetuje auto_increment u INNODB-u?22.06.2009. u 08:07 - pre 179 meseci
Hvala na odgovoru. MyISAM mi ne odgovara zbog kompletnog a ne delimicnog zakljucavanja tabele pri operacijama.
Lako sam ispravio model baze sada kada sam shvatio da se i AUTO INCREMENT mora uzeti u obzir pri modeliranju baze sa INNODB tabelama.
To je za mene novost.

Hvala Kecmane, pomogao si mi da resim problem. Dodao sam relacije sa svim tabelama gde je to neophodno da INNODB ne bi resetovao AUTO INCREMENT kada ne treba. A tamo gde je relacije nemoguce dodati, tamo cu to resiti na drugi nacin (redji slucajevi).

Hvala.
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
 
Odgovor na temu

[es] :: MySQL :: Kako da se ne resetuje auto_increment u INNODB-u?

[ Pregleda: 1691 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.