Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 5.01.2006 Skąd: Kraków Ostrzeżenie: (10%)
|
Witam.
Potrzebuję kilka przykładów jak wywołać taki błąd w mysql?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Pilne. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
słyszałem o sytuacjach, w ktorych komuś zależało, by .. nie wywołać takiego błędu.
Nie znam jednak żadnego rozsądnego i zgodnego z prawem powodu, by go ... wywoływać. Zamykam. |
|
|
|
Post
#3
|
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
Po subtelnej i grzecznej (hihihi) prośbie o otwarcie tego tematu, temat otwieram.
Oczywiście tylko w celach informacyjnych, bo przecież nie chcemy wywoływać takich błędów na komercyjnych serwerach, i oczywiście – nie rozwiązujemy czyichś „zadań domowych”… |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 5.01.2006 Skąd: Kraków Ostrzeżenie: (10%)
|
Niezmiernie mi miło że temat został odblokowany. W takim razie pożyjemy zobaczymy jak forumowicze radzą sobie z generowaniem błędów w mysql, ponieważ jak ogólnie wiadomo nie sztuka poradzić sobie z błędem ale go wywołać gdyż to wymaga dużo większej znajomości mysql.
Ale wierze w to foum (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%)
|
Hm, a w jakich okolicznosciach taki blad moze sie pojawic? Jak bede mial czas to zerkne na google, ale jak mozesz to napisz cos wiecje o tym bledzie.
|
|
|
|
Post
#6
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Działasz na dwóch konsolach:
Konsola 1 Cytat > BEGIN; > UPDATE tabela SET pole = wartość WHERE id = wartość; > Konsola 2 Cytat > BEGIN; > UPDATE tabela SET pole = wartość WHERE id = wartość; > No i masz Deadlock (zakleszczenie). Dopóki nie dasz COMMIT lub ROLLBACK dla pierwszej transakcji, to druga nie uzyska dostępu do rekordu (tabeli). Zakleszczenie |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%)
|
Aaaa no glupi jestem. Wiem co to zakleszczenie ale jakos w kontekscie mysql mi sie zapomnialo (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Podany przyklad przez ~mike_mecha jest ok, z tym, ze w normalnych skryptach "dobrze" zaprojektowanych dla kazdego BEGIN masz ROLLBACK lub COMMIT. I teraz sprawa jest taka, ze nie gwarantuje to, ze taki deadlock nie wystapi. Klasyczny deadlock wystapi, jesli proces A zalozyh blokade na zasob ZA, proces B zalozy blokade na zasob ZB i teraz proces A probuje zalozyc blokade na zasob ZB (ale musi poczekac, az proces B ja sciagnie), zas proces B chce zalozyc blokade na zasob ZA (ale musi poczekac, az proces A ja sciagnie). I wtedy powstanie takie zakleszczenie.
Probowalem przed chwila ulepszyc przyklad podany przez ~mike_mecha w ten spsob, ze wlaczylem sobie 2 konsole. Na obu z nich rozpoczalem transakcje (BEGIN;), potem na konsoli A zrobilem update tabeli X, zas na konsoli B update tabeli Y. Pozniej chcialem zamienic update'y (na konsoli A update tabeli Y, na konsoli B update tabeli X) i o dziwo dostalem komunikat: Cytat update AKTUALNY_SEZON set ID_SEZONU=1 where ID_SEZONU=1; ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction Nie wiem wiec, czy mozna taki deadlock wywolac w mysql, czy zabezpieczyli sie przed tym sprawdzajac taki graf procesow i zasobow. Ten post edytował Radarek 20.01.2006, 19:50:41 |
|
|
|
Post
#8
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
@mike_mech Twoj przyklad jest sprawdzony, bo wydaje mi sie sie ze jesli blokujesz calu zasob to 2 transakcja czeka na wykonanie, wiec w tym przypadku zakleszczenia nie bedzie.
Bardziej bym sie trzymal wersji @Radarek 1 transakcja
2 transakcja
Oczywiscie update musi byc na przemian, ale dokladnie to musze sprawdzic. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 5.01.2006 Skąd: Kraków Ostrzeżenie: (10%)
|
Spoko.
Fajne przykłady oto mi mniej wiecej chodzi. Czekam na więcej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 15:35 |