![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 4.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
rozpoczynam transakcje, w trakcie sprawdzam jakies warunki i w przypadku false, wychodzi z danej funkcji z bledem i nie dociera do polecenia COMMIT,
ale zmiany w bazie i tak sa dokonywane (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) co jest? czemu tak sie dzieje?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(ernik @ 2005-05-16 22:45:03) rozpoczynam transakcje, w trakcie sprawdzam jakies warunki i w przypadku false, wychodzi z danej funkcji z bledem i nie dociera do polecenia COMMIT, ale zmiany w bazie i tak sa dokonywane (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) co jest? czemu tak sie dzieje?
Masz przykład:
Jeśli inerst 1 powiedzie się a insert 2 nie powiedzie się to nic nie zostanie zapisane. Tabele muszą być InnoDB. W mysql > 4.1.x są chyba domyślne - sprawdź w archiwum gdzieś o tym pisałem. Jeśli mój przykład zawiedzie to znaczy, że w bazie ustawione jest AITOCOMMIT=1 ( automatycznie wszystko zatwierdza) więc zmień to na 0 pozdrawiam EDIT: Tu masz więcej na ten temat http://forum.php.pl/index.php?showtopic=29...je+i+blokowanie Ten post edytował J4r0d 17.05.2005, 00:51:01 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 4.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie zadzialalo,
nawet rollback nie dziala jak wstawie przed zwroceniem bledu czy ustawiajac autocommit=0 musze nawet pojedyncze INSERT,UPDATE,DELETE zawierac w (begin;) -tu polecenie (commit;)? normalnie masakra, transakcja nie chce zadzialac... (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) wstawiam pomiedzy inserty - "twardy" 'return' mimo ze nie dodaje do drugiej tabelki, to do pierwszej dodaje... (IMG:http://forum.php.pl/style_emoticons/default/mad.gif) EDIT:wreszcie zadzialalo , wystarczylo zmienic tabelke na InnoDB (niedopatrzenie - ale to z nawalu pracy) no wlasnie czemu tworzy mi tabelki myisam, skoro w skrypcie mam ustawione TYPE=InnoDB dla kazdej tabelki, skrypt wykonuje sie prawidlowo ale tabelki sa myisam (IMG:http://forum.php.pl/style_emoticons/default/mad.gif) Ten post edytował ernik 17.05.2005, 10:04:21 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
w przypadku, gdy wychodzisz z funkcji przez zakonczeniem transakcji musisz dać rollback, aby wycofać wszelkie zmiany.
commit dajesz gdy zatwierdzasz zmiany, rollback gdy nie zatwierdzasz i chesz się wycofać. Mi to zawsze dziala. Wniosek: gdy błąd to rollback |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 02:33 |