Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Ucinanie treści kwerend przez SQL_ThreadQuery


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 19.07.2017 14:11

Witajcie.

 

Od kilku dni męczy mnie problem ucinania kwerend w pluginie.

 

W logach objawia się to następująco:

********************
Wystapil blad w zapytaniu.
Kod bledu: 1109 [ Unknown table 's' in field list ].
Tresc polecenia: "SELECT '0' AS RS_ID, s.`id` AS _INT1, s.`prototype_id` AS _INT2, sp.`skin_weapon_id` "
********************

Oryginalna treść kwerendy:

SELECT '0' AS RS_ID, 
       s.id AS _INT1, 
       s.prototype_id AS _INT2, 
       sp.skin_weapon_id AS _INT3, 
       s.custom_tag AS _STR1 
FROM gm_skins AS s INNER JOIN gm_prototypes AS sp ON s.prototype_id=sp.id 
WHERE owner_id='2' AND is_equipped='1'  

UNION 
SELECT '1' AS RS_ID, 
       chests_keys AS _INT1, 
       chests AS _INT2, 
       'NULL' AS _INT3, 
       'NULL' AS _STR1 
FROM gm_items 
WHERE pid='2' 

UNION 
SELECT '2' AS RS_ID,
       coins AS _INT1, 
       'NULL' AS _INT2, 
       'NULL' AS _INT3, 
       'NULL' AS _STR1 
FROM gm_currency 
WHERE pid='2';

Kolejny przykład błędu:

********************
Wystapil blad w zapytaniu.
Kod bledu: 1064 [ You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 ].
Tresc polecenia: "SELECT COUNT(*) AS player_skins_count, SUM(CASE WHEN sp.`skin_weapon_id` IN ('3', '5'"
********************

Ciekawostka: ucina do 85 znaków xD.

Formatowanie kwerendy jest przeprowadzane w pełni poprawnie (do formatowania stosuję formatex / format_args() z buforem-stringiem o długości 1024 znaków, bez podmieniania znaków specjalnych - wydaje mi się, że w obecnej fazie jest to zbędne).

 

Błąd nie występuje cały czas. Dotyczy jedynie kwerend z klauzulą SELECT (może się przyda), a pojawia się nieregularnie.

Z uwagi na ten ostatni fakt, wychodzę do was z pytaniem, czy owy problem tyczy się tylko i wyłącznie połączenia z bazą? (testowałem na pukawce i płatnej, zewnętrznej bazie - podobne rezultaty). Ktoś może spotkał się z podobną sytuacją?

 

PS. Kodu nie ma sensu podawać - gdyby to w nim był błąd, problem pojawiałby się regularnie...


Użytkownik _McHappy edytował ten post 19.07.2017 14:15

  • +
  • -
  • 0

#2 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 23.07.2017 23:40

Miałem podobny problem z długim zapytaniem, zadeklaruj sobie dużą tablicę i zmienną pomocniczą.

new szTemp[2048];
new pos = 0;

Następnie podziel zapytanie na takie części: (dokładnie tyle linijek ile jest tutaj)

	pos += formatex(szTemp[pos], charsmax(szTemp)-pos, " `kolumna1` int(1) NOT NULL DEFAULT '0',\
  `kolumna2` int(1) NOT NULL DEFAULT '0',\
  `kolumna3` int(1) NOT NULL DEFAULT '0',\
  `kolumna4` int(1) NOT NULL DEFAULT '0',\
  `kolumna5` int(1) NOT NULL DEFAULT '0',\
  `kolumna6` int(1) NOT NULL DEFAULT '0',\
  `kolumna7` int(1) NOT NULL DEFAULT '0',\
  `kolumna8` int(1) NOT NULL DEFAULT '0',\
  `kolumna9` int(1) NOT NULL DEFAULT '0',");

  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#3 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 24.07.2017 13:04

Jeśli wszystko jest dobrze tak jak mówisz to w zapytaniu musi być błąd, a tylko w logach otrzymujesz tyle informacji ile zmieściło się w buforze.


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych