![](https://secure.gravatar.com/avatar/f8dd116a2eac7f6ab79a83a46ab42cb7.jpg?s=120&d=mm&r=g)
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.
![](https://secure.gravatar.com/avatar/ab17374bac056d919e11a54dd9ca8df4.jpg?s=120&d=mm&r=g)
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
![](https://secure.gravatar.com/avatar/f8dd116a2eac7f6ab79a83a46ab42cb7.jpg?s=120&d=mm&r=g)
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