![]() |
![]() |
![]()
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.
|
|
|
![]() |
![]()
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
![]() -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
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 |
|
|
![]()
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.
|
|
|
![]()
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 |
|
|
![]()
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. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Proszę bardzo
![]() http://www.percona.com/blog/2011/11/29/avo...-insert-ignore/ To jest rozwiązanie Twojego problemu |
|
|
![]()
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
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:44 |