Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwna inkrementacja
lukaskolista
post 2.10.2014, 13:27:10
Post #1





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Dzień dobry, mam problem z inkrementacją w MySQL. Normalnie kolumna id ikrementuje się co 1, jednak czasami skacze o wiele wartości w góre, np. o 20, czy nawet 300. Co może być tego przyczyną? Bedę bardzo wdzięczny za wszystkie sugestie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
markuz
post 2.10.2014, 13:34:46
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Przyczyną może być zły kod wink.gif Pokaż miejsce w którym dodajesz ten rekord.


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 2.10.2014, 13:38:15
Post #3





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


  1. ORM::factory('Item')->set(..., ...)->create();

Kod php jest na 100% dobry, przyszedl mi do glowy pomysl z kluczem unique. Na jedna z kolumn mam nalozony wlasnie taki klucz, a jezeli wartosci sie powtarzaja to MySQL moze inkrementowac licznik a nie dodawac rekordu.

Ten post edytował lukaskolista 2.10.2014, 13:44:36
Go to the top of the page
+Quote Post
Pyton_000
post 2.10.2014, 13:50:14
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jak będzie błąd unique to Ci wywala Exception więc nie ma mowy o wykonaniu kolejnego zapytania, chyba że wyciszasz błąd.

Pokaż strukturę BD
Go to the top of the page
+Quote Post
lukaskolista
post 2.10.2014, 14:25:16
Post #5





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Jednak to byl problem klucza unique, teraz przed dodaniem rekordu robie najpierw select na ta kolumne i sprawdzam, czy wartosc jest juz w tej kolumnie.
Go to the top of the page
+Quote Post
nospor
post 9.10.2014, 08:45:16
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Az zrobilem sobie test. DOdalem kolumne, z kluczem UNIQUE na jednym polu. Dodaje kolejne rekordy, autoincrement ladnie zwieksza się o jeden.
Zaczalem dodawac kolejne rekordy z duplikacją nazwy, nie dodal sie ani jeden rekord.
Zaczalem dodawac znowu normalne rekordy bez duplikacji. Autoincrement zaczał iść normalnie, bez żadnego przeskoku, o ktorym mowisz.

ALbo wiec u siebie nie dzialasz na jednej tabeli tylko na kilku i w ktorejs to wystepuje blad, albo jeszcze cos innego.
Tak wiem, problem rzekomo rozwiązany masz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tuminure
post 9.10.2014, 09:59:39
Post #7





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


@up
Aż też zrobiłem test, bo byłem przekonany, że taki przeskok jest zawsze.

Doszedłem do wniosku, że wszystko zależy od bazy danych, silnika, czy wersji... W przypadku MySQL z InnoDB, dodanie duplikatu powoduje zwiększenie licznika. W przypadku MySQL z MyISAM duplikat nie zwiększa licznika.
Go to the top of the page
+Quote Post
Pyton_000
post 9.10.2014, 10:14:34
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Proszę bardzo smile.gif
http://www.percona.com/blog/2011/11/29/avo...-insert-ignore/

To jest rozwiązanie Twojego problemu
Go to the top of the page
+Quote Post
nospor
post 9.10.2014, 10:15:09
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Tuminure A faktycznie, nie zwrocilem uwagi, ze dzialam na MyISAM. Dla InnoDB jest jak mowisz, zwieksza licznik. Interesujące. Dobrze wiedziec smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:44