witam próbuje odpalić zapytanie rozliczające faktury wykorzystując daemona i moduł system. w konfiguracji ustawiam: sql = CREATE TEMPORARY TABLE tabela_tymczasowa AS SELECT customerid FROM cash WHERE time <= unix_timestamp() GROUP BY customerid HAVING SUM(value)
= 0;ALTER TABLE tabela_tymczasowa ADD UNIQUE (customerid);UPDATE documents
d RIGHT JOIN tabela_tymczasowa t ON t.customerid=d.customerid SET closed = 1 WHERE type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0;
próbowałem również z " ' ": sql = 'CREATE TEMPORARY TABLE tabela_tymczasowa AS SELECT customerid FROM cash WHERE time <= unix_timestamp() GROUP BY customerid HAVING SUM(value)
= 0;ALTER TABLE tabela_tymczasowa ADD UNIQUE (customerid);UPDATE documents
d RIGHT JOIN tabela_tymczasowa t ON t.customerid=d.customerid SET closed = 1 WHERE type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0;'
ale niestety faktury się nie rozliczają. jak odpale to zapytanie bezpośrednio w sql to bez problemu są wykonywane 3 zaptyania i faktury są rozliczane.
spróbowałem rozbić te polecenia na pojedyńcze i zrobiłem 3 instancje z priorytetami 4,5,6 to zadziałało. czemu moduł system nie przyjmuje, wykonuje ciągu poleceń rozdzielonych średnikami?
un 13 13:08:00 testsql lmsd: DEBUG: [SQL] SELECT daemoninstances.name AS section, var, value FROM daemonconfig, hosts, daemoninstances WHERE hostid= hosts.id AND instanceid=daemoninstances.id AND hosts.name='localhost' AND daemoninstances.name='rozliczFaktury' AND daemonconfig.disabled=0 Jun 13 13:08:00 testsql lmsd: DEBUG: [rozliczFaktury/system] initialized Jun 13 13:08:00 testsql lmsd: DEBUG: [SQL] 'CREATE TEMPORARY TABLE tabela_tymczasowa AS SELECT customerid FROM cash WHERE time <= unix_timestamp() GROUP BY customerid HAVING SUM(value) >= 0;ALTER TABLE tabela_tymczasowa ADD UNIQUE (customerid);UPDATE documents d RIGHT JOIN tabela_tymczasowa t ON t.customerid=d.customerid SET closed = 1 WHERE type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0;' Jun 13 13:08:00 testsql lmsd: DEBUG: [rozliczFaktury/system] reloaded Jun 13 13:08:00 testsql lmsd: DEBUG: [lmsd] Disconnected. Jun 13 13:08:00 testsql lmsd: DEBUG: [lmsd] Reload finished. Exiting child.
W dniu 13.06.2012 13:08, Marcin napisał(a):
witam próbuje odpalić zapytanie rozliczające faktury wykorzystując daemona i moduł system. w konfiguracji ustawiam: sql = CREATE TEMPORARY TABLE tabela_tymczasowa AS SELECT customerid FROM cash WHERE time <= unix_timestamp() GROUP BY customerid HAVING SUM(value) >= 0;ALTER TABLE tabela_tymczasowa ADD UNIQUE (customerid);UPDATE documents d RIGHT JOIN tabela_tymczasowa t ON t.customerid=d.customerid SET closed = 1 WHERE type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0;
próbowałem również z " ": sql = CREATE TEMPORARY TABLE tabela_tymczasowa AS SELECT customerid FROM cash WHERE time <= unix_timestamp() GROUP BY customerid HAVING SUM(value) >= 0;ALTER TABLE tabela_tymczasowa ADD UNIQUE (customerid);UPDATE documents d RIGHT JOIN tabela_tymczasowa t ON t.customerid=d.customerid SET closed = 1 WHERE type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0;
ale niestety faktury się nie rozliczają. jak odpale to zapytanie bezpośrednio w sql to bez problemu są wykonywane 3 zaptyania i faktury są rozliczane.
spróbowałem rozbić te polecenia na pojedyńcze i zrobiłem 3 instancje z priorytetami 4,5,6 to zadziałało. czemu moduł system nie przyjmuje, wykonuje ciągu poleceń rozdzielonych średnikami?
Marcinku, po raz kolejny dajesz mi okazję do zjechania Mysql ;-) Zajrzyj pod adres i wszystko stanie się jasne :) http://dev.mysql.com/doc/refman/5.1/en/c-api-multiple-queries.html
Podpowiedź: w daemonie używamy funkcji C API mysql_query(), a obsługa wielu poleceń w jednym wykonaniu doszło od Mysql 5.1. Może w mysql 10.7 zrobią w końcu logowanie wszystkich zapytań w strawnej postaci...
-- Pozdrawiam Marcin / nicraM
W dniu 13 czerwca 2012 13:17 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał
Marcinku, po raz kolejny dajesz mi okazję do zjechania Mysql ;-) Zajrzyj pod adres i wszystko stanie się jasne :) http://dev.mysql.com/doc/**refman/5.1/en/c-api-multiple-**queries.htmlhttp://dev.mysql.com/doc/refman/5.1/en/c-api-multiple-queries.html
Podpowiedź: w daemonie używamy funkcji C API mysql_query(), a obsługa wielu poleceń w jednym wykonaniu doszło od Mysql 5.1. Może w mysql 10.7 zrobią w końcu logowanie wszystkich zapytań w strawnej postaci...
dzięki za rozjaśnienie. wersja mojego mysql: Server version: 5.1.49-3-log (Debian) więc z tym co tam piszą powinno działać.
/* execute multiple statements */ status = mysql_query(mysql, "DROP TABLE IF EXISTS test_table;\ CREATE TABLE test_table(id INT);\ INSERT INTO test_table VALUES(10);\ UPDATE test_table SET id=20 WHERE id=10;\ SELECT * FROM test_table;\ DROP TABLE test_table");
uczestnicy (2)
-
Marcin
-
Tomasz Chiliński