brak wyników mssql_query na linux-ie, problem z otrzymaniem wyniku zapytania na linux-ie |
brak wyników mssql_query na linux-ie, problem z otrzymaniem wyniku zapytania na linux-ie |
19.08.2014, 20:56:58
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 4.09.2008 Ostrzeżenie: (0%) |
Witajcie,
mam problem z apache2 i php 5.4.14 na debianie (raspbian-ie). Napisałem dość spore zapytanie i nie mogę uzyskać jego wyników przy odpytaniu ms sql servera 2008 r2 i FreeTDS. Może ktoś pomoże, bo nie działa mssql_query() anie mssql_init() i mssql_execute() dla procedury składowanej, którą stworzyłem z zapytania aby bardziej to wszystko czytelne było. Oto ustawienia z phpinfo() serwera: PHP Version 5.4.4-14+deb7u12 System Linux pi 3.12.22+ #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l Build Date Jul 8 2014 21:59:57 Server API Apache 2.0 Handler PHP API 20100412 PHP Extension 20100525 Zend Extension 220100525 Zend Extension Build API220100525,NTS PHP Extension Build API20100525,NTS Debug Build no Thread Safety disabled Apache Version Apache/2.2.22 (Debian) Apache API Version 20051115 User/Group www-data(33)/33 Max Requests Per Child: 0 - Keep Alive: on - Max Per Connection: 100 Timeouts Connection: 300 - Keep-Alive: 5 Virtual Server Yes Server Root /etc/apache2 Loaded Modules core mod_log_config mod_logio mod_version prefork http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_setenvif mod_status Directive Local Value Master Value engine 1 1 last_modified 0 0 xbithack 0 0 Apache Environment Variable Value HTTP_HOST 192.168.0.101 HTTP_USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Firefox/31.0 DOCUMENT_ROOT /var/www SERVER_ADMIN webmaster@localhost SCRIPT_FILENAME /var/www/phpinfo.php Core PHP Version 5.4.4-14+deb7u12 mail.add_x_header On On mail.force_extra_parameters no value no value mail.log no value no value max_execution_time 30 30 max_file_uploads 20 20 max_input_nesting_level 64 64 max_input_time 60 60 max_input_vars 1000 1000 memory_limit 128M 128M open_basedir no value no value output_buffering 4096 4096 mssql MSSQL Support enabled Active Persistent Links 0 Active Links 0 Library version FreeTDS Directive Local Value Master Value mssql.allow_persistent On On mssql.batchsize 0 0 mssql.charset no value no value mssql.compatability_mode Off Off mssql.connect_timeout 5 5 mssql.datetimeconvert On On mssql.max_links Unlimited Unlimited mssql.max_persistent Unlimited Unlimited mssql.max_procs Unlimited Unlimited mssql.min_error_severity 10 10 mssql.min_message_severity 10 10 mssql.secure_connection Off Off mssql.textlimit Server default Server default mssql.textsize Server default Server default mssql.timeout 180 180 a to zawartość pliku php:
Ostatni var_dump($row) zwraca null. Skrypt łączy się z serwerem i odpytuje go ale nic nie zwraca. Dlaczego? Czy zapytanie jest za długie?? czy można je ew 'na raty' rozbić? Pozdrawiam i ziękuję za odpowiedzi. Marcin Ten post edytował krzyzaq 19.08.2014, 20:58:33 |
|
|
20.08.2014, 10:49:37
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Kod SQL-owy jest całkowicie bez sensu. Nie ma prawa się wykonać. Brakuje ; albo (wprzypadku MS SQL-a) GO.
|
|
|
20.08.2014, 10:56:08
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 457 Pomógł: 6296 Dołączył: 27.12.2004 |
A mssql_query pozwala w ogole na wykonywanie wielu zapytan w jednym mssql_query? Teoretycznie każde zapytanie powinno zostać wykonane przez oddzielne mssql_query a nie wszystko w jednym.
Poza tym ten kod powinien wywalić sie juz na tym die('MSSQL error: '.mssql_get_last_message()); i w ogole do var_dump nie dojsc. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.08.2014, 22:50:31
Post
#4
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 4.09.2008 Ostrzeżenie: (0%) |
zakładając, że zapytanie sql działa, jak zrobić, aby wynik tego ostatniego zaczytać do zmiennej php?
czy FreeTDS dobrze współpracuje z mssql_init(), mssql_execute()? jeśli utworzyłbym procedurę w mssql np. 'zapytanie', to dlaczego jej uruchomienie za pomocą poniższego kodu nie działa?
z sql profiler-a wiem, że zapytanie się wykonuje - choc ogarnia mniejszą liczbę operacji niz puszczone wprost na serwerze przez mssms @mmmmmm nie wiem jak czytales ze jest bez sensu... linia 236 zamiast byc powinno być i pozamiatane. Wystarczylo wkleic i spr co debugger powie. niemniej dalej nie działa. czy problemem mogą być tabele tymczasowe? |
|
|
22.08.2014, 07:04:34
Post
#5
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) |
Jeśli jesteś przekonany, że zapytanie wykonuje Ci się na bazie, to tego ostatniego selecta wykonaj oddzielnie.
Ten post edytował mar1aczi 22.08.2014, 07:04:52 -------------------- Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
|
|
|
22.08.2014, 07:40:19
Post
#6
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 4.09.2008 Ostrzeżenie: (0%) |
@mar1aczi: a Ty idąc pod prysznic tylko wycierasz się ręcznikiem zamiast się polać wodą najpierw? chyba się nie wykona, bo poprzednie transakcje przygotowują wszystkie tabele tymczasowe i wklejają do nich dane...
jak na razie zero pomocy... dziś przerobie z tablic tymczasowych na zmienne tablicowe i sprawdzę czy zadziała. Sprawdziłem na SELECT @@Version wklejając do procedury, i to sie wykonało na php. |
|
|
22.08.2014, 10:25:09
Post
#7
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) |
Co ma prysznic do operacji na bazach danych?
Do bazy możesz dane wstawić, możesz zaktualizować, możesz pobrać, możesz usunąć... i operacje te nie muszą być wykonywane łącznie. Pojedynczo, każda z nich również ma sens. Idąc pod prysznic i używając od razu ręcznika, szkoda było drogi pod prysznic jak chciałeś się tylko podrapać ;] Twoja "cała procedura" najpierw usuwa tabele tymczasowe (jak to określiłeś), potem wykonuje operacje w celu przygotowania danych i wstawia je do tych tabel a na końcu pobiera. Czy jak wykonasz najpierw cześć: "operacje w celu przygotowania danych i wstawienie ich do tabel tymczasowych" a w kolejnym zapytaniu je pobierzesz, to czy te dane już zdążą zniknąć przed ich pobraniem? Uważam stanowczo, że nie. Oczywiście chodzi o test, czyli zakładam, że tylko jeden użytkownik wykonuje "Twoją procedurę" ale podzieloną na dwa kroki. -------------------- Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
|
|
|
22.08.2014, 11:59:29
Post
#8
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 4.09.2008 Ostrzeżenie: (0%) |
i własnie o to mi chodziło, nie można zacząć od końca bo nie ma sensu logicznego to co się zrobi.
niemniej problem rozwiązałem - w jakis sposób okazuje się, że php z mssql nie radzi sobie z tabelami tymczasowymi. czemu - nie mam pojęcia - ale po zmiani ich na zmienne typu table wszystko smiga aż miło. chyba sobie gwiazdke dodam za pomoc dzięki za sugestie, które w sumie podpwiedziały może rozwiązanie. |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 02:41 |