![]() |
![]() |
![]()
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 ![]()
|
|
|
![]() |
![]()
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 ![]()
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 -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
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... ![]() wstawiam pomiedzy inserty - "twardy" 'return' mimo ze nie dodaje do drugiej tabelki, to do pierwszej dodaje... ![]() 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 ![]() Ten post edytował ernik 17.05.2005, 10:04:21 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 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 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 13:47 |