![]() |
![]() |
![]() ![]()
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? ![]() 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. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
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”… -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
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 ![]() |
|
|
![]()
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
![]() 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 ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 17:29 |