Portál AbcLinuxu, 10. května 2025 05:06
Řešení dotazu:
Diskuse byla administrátory uzamčena.
FAQ: Proč byl uzamčen/smazán můj dotaz v Poradně?
/etc/init.d/mysql stop
START TRANSACTION
a na konci
COMMIT
?
... ale otázkou je kdy začíná a kdy končí (bo v takových případech to api nemá šanci poznat).Jasne ze to pozna, protoze mu to nejakym zpusobem reknes. A kdyz nereknes a transakcni objekt dojde na konec sve platnosti a opravdu to poznat nemuze, tak klidne v destruktoru udela implicitni rollback a pokud mozne jeste zacne rvat ze jsi trouba zapomel na commit. Idealni je kdyz na to ma prostredky primo jazyk, vizte priklad v pajtnu:
conn = MySQLdb.connect("spam", "ham", "dirt", "mud") with conn as cur: cur.query("insert ...") ... cur.query("select ...") if cur.fetchone()[0] == "fully_ladden_swalow": raise RuntimeError("whatever") ...Kdyz ve with bloku vystreli vyjimka, tak se automaticky zavola rollback (a vyjimka se propaguje dal), jinak se na konci bloku zavola commit. Podobnou vec mame ve firme napsanou v C++ a delat bez toho nejaky vetsi projekty bych si uz davno nelajznul. Staci jednou zapomenout commit v nejakym slozitejsim vetveni kde si toho clovek nevsimne... A nenakecate mi ze podobna vec neexistuje pro php, zase TAK spatnej ten jazyk neni
try{ $rec = new TRec(); $rec->set_XXy($xy); $rec->Insert(false);//no commit $rec2 = new TRec2(); $rec2->set_rec1id_fk($rec->get_id()); $rec->set_ZZy($zy); $rec2->Insert(); //or //$rec2->Insert(false); //r=con->commit(); }catch(Exception $e){ con->rollback(); }
SHOW PROCESSLIST
a jakmile tam bude „jen“ jeden záznam něco jako Info: SHOW PROCESSLIST
, tak to hned stopnout.FLUSH TABLES
, ale myšlenka je obecně neřešitelná…
A ty v aute motor vypinas za jazdy, alebo najskor zastavis a potom vypnes motor? Najbezpecnejsie je ukoncit program a potom stopnut databazu.
service apache2 stop && service mysql stop
tohle je zase diskuze jako kdyby nekdo spravoval produkcni server zpracovavajici transakce nejake banky ktera urcite nebude pouzivat mysql
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.