Forum » Programiranje » [MariaDB] Error pri nastavitvi "SET TRANSACTION ISOLATION LEVEL"
[MariaDB] Error pri nastavitvi "SET TRANSACTION ISOLATION LEVEL"
HotBurek ::
Dobro jutro.
Evo fantje in dekline, nov dan, nov izziv.
Database server je MariaDB.
Naredil sem sledečo proceduro:
Potem grem v termianl, se povežem na server in poženem sledeč ukaz:
In dobim error:
Spet ena zagonetka...
Evo fantje in dekline, nov dan, nov izziv.
Database server je MariaDB.
Naredil sem sledečo proceduro:
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test`() SQL SECURITY INVOKER BEGIN # set transaction isolation level SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; # start transaction START TRANSACTION READ WRITE; # commit transaction COMMIT; END
Potem grem v termianl, se povežem na server in poženem sledeč ukaz:
CALL `sp_test`();
In dobim error:
ERROR 1568 (25001): Transaction characteristics can't be changed while a transaction is in progress
Spet ena zagonetka...
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
HotBurek ::
Evo, sem malo testiral, in mislim da sem našel, v čem je bil problem.
Program DBeaver že sam po sebi štarta transakcije.
Dokumentacija je tule: https://dbeaver.com/docs/dbeaver/Auto-a...
Če se to (transaction) izklopi, pa dela testna procedure. Ena druga, ki je večja, pa ne. To še ne vem, zakaj je tako.
Glavno pa je, da gre za "DBeaver" problem, drugje pa dela. Tudi v terminalu, a ne vem, zakaj prej ni delalo.
Kind of okey-ish done.
Program DBeaver že sam po sebi štarta transakcije.
Dokumentacija je tule: https://dbeaver.com/docs/dbeaver/Auto-a...
Če se to (transaction) izklopi, pa dela testna procedure. Ena druga, ki je večja, pa ne. To še ne vem, zakaj je tako.
Glavno pa je, da gre za "DBeaver" problem, drugje pa dela. Tudi v terminalu, a ne vem, zakaj prej ni delalo.
Kind of okey-ish done.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
DamijanD ::
No prej si napisal terminal, ne DBeaver.
Anyway to da v SP spreminjaš isolation level je bolj slaba praksa (oz. po novem Well that is not how it is done ) Ker nikoli ne veš iz katerega konteksta se bo SP klicala. Isolation level se nastavi, ko odpreš povezavo oz, ko štartaš prvo (zunanjo) transakcijo.
Anyway to da v SP spreminjaš isolation level je bolj slaba praksa (oz. po novem Well that is not how it is done ) Ker nikoli ne veš iz katerega konteksta se bo SP klicala. Isolation level se nastavi, ko odpreš povezavo oz, ko štartaš prvo (zunanjo) transakcijo.
HotBurek ::
Proceduro kličem iz dveh različnih procesov (Python skripta).
Vse kar bi rad, da ko procedura inserta podatke (insert (a, b, c) select a, b, c;) da me ne moti, če pride do nekonsistence. Itak se kasneje popravi, ko ena izmed procedur dela refresh.
Vse kar bi rad, da ko procedura inserta podatke (insert (a, b, c) select a, b, c;) da me ne moti, če pride do nekonsistence. Itak se kasneje popravi, ko ena izmed procedur dela refresh.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
HotBurek ::
Včeraj in danes sme še naprej raziskoval.
Odkril sem, da po defaultu sql_engine (od SqlAlchemy) "hrani" connection v pool-u, tudi če ga zapremo (close).
Tako je program v prvem loop-u uspešno pognal proceduro (v kateri se nastavi TRANSACTION ISOLATION LEVEL), v vsakem naslednjem loop-u pa ne.
Zadevo sem rešil takole:
Dokumentacija: https://docs.sqlalchemy.org/en/20/core/...
Well done.
Odkril sem, da po defaultu sql_engine (od SqlAlchemy) "hrani" connection v pool-u, tudi če ga zapremo (close).
Tako je program v prvem loop-u uspešno pognal proceduro (v kateri se nastavi TRANSACTION ISOLATION LEVEL), v vsakem naslednjem loop-u pa ne.
Zadevo sem rešil takole:
import sqlalchemy.pool; sql_engine = sqlalchemy.create_engine(sqlhost, future=True, poolclass=sqlalchemy.pool.NullPool);
Dokumentacija: https://docs.sqlalchemy.org/en/20/core/...
Well done.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
Ales ::
Ugasneš pool in si rečeš "well done".
Well done @HotBurek! Very well done - če bi bil zrezek bi se temu reklo "zoglenel".
Well done @HotBurek! Very well done - če bi bil zrezek bi se temu reklo "zoglenel".
Zgodovina sprememb…
- spremenil: Ales ()
pegasus ::
HotBurek, bo to nova mimovrste štacuna?
(Ko sem 2007 prišel na Domenco, sem med drugim takratnega developerja mimovrste vprašal, kakšne in kako uporablja transakcije. Debelo me je pogledal in vprašal "kaj so to transkacije". Mu razložim ... me gleda in izjavi "mi tega ne rabimo")
(Ko sem 2007 prišel na Domenco, sem med drugim takratnega developerja mimovrste vprašal, kakšne in kako uporablja transakcije. Debelo me je pogledal in vprašal "kaj so to transkacije". Mu razložim ... me gleda in izjavi "mi tega ne rabimo")
HotBurek ::
V štartu je bilo mišljeno kot dropšiping. Da bi kupec kupil izdelek (ali več njih), jaz pa bi tak ticket (in s tem obveznosti kot so dostava, tracking, return policija, customer care itn.) "preprodal" naprej za vrednost nakupa + 1 cent provizije za vsak izdelek.
Zdej ta front-end del bi mi bilo zanimivo naredit, problem je potem vse ostalo: komu to preprodat naprej, kako sklent ugodoen dogovor v štartu ko si no-name, postavit firmo (doo, papirji), ... Mogoče bom tak sistem kdaj kasneje tudi postavil, ali pa na obstoječem dodal možnost.
Trenutno pa delam iskalnik produktov. Again. Brez spremljanja zgodovine cen (ker me to ne zanima, in tega zaenkrat ni). Pa iskanje po državah, glede na to, kje ima spletna stran "sedež". In, iskanje v širino.
Trenutno filam podatke v bazo, in je kr zamudno...
Zdej ta front-end del bi mi bilo zanimivo naredit, problem je potem vse ostalo: komu to preprodat naprej, kako sklent ugodoen dogovor v štartu ko si no-name, postavit firmo (doo, papirji), ... Mogoče bom tak sistem kdaj kasneje tudi postavil, ali pa na obstoječem dodal možnost.
Trenutno pa delam iskalnik produktov. Again. Brez spremljanja zgodovine cen (ker me to ne zanima, in tega zaenkrat ni). Pa iskanje po državah, glede na to, kje ima spletna stran "sedež". In, iskanje v širino.
Trenutno filam podatke v bazo, in je kr zamudno...
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Try/Except/Finally] - Kako pravilno zapreti povezavo na SQL bazo v Python-u?Oddelek: Programiranje | 994 (398) | jan_g |
» | [MariaDB] Kako napisat SQL za top N by group?Oddelek: Programiranje | 528 (339) | kljuka13 |
» | Mariadb (InnoDB) istočasni insert v tabelo iz različnih procesov (strani: 1 2 )Oddelek: Programiranje | 7301 (3659) | 2g00d4u |
» | [SQL] primary key inkrementalno dodajanje (strani: 1 2 )Oddelek: Programiranje | 5374 (4564) | ejresnevem |