←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem z sql poprzez SQLx

Zablokowany

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 22.06.2010

Witam, próbuję przerobić plugin do robienia screenów, aby zapisywał fakt zrobienia screena do sql, niestety wywala mi błąd zapytania, którego nawet nie potrafię zrozumieć. Oto fragment logu:
L 06/22/2010 - 21:30:33: [screen.amxx] [CheckHandler] Błąd zapytania SQL (12092): %L
L 06/22/2010 - 21:30:33: [screen.amxx] [CheckHandler] 
L 06/22/2010 - 21:30:33: [screen.amxx] [CheckHandler]    0.21
L 06/22/2010 - 21:30:33: [screen.amxx] [CheckHandler] Query: INSERT INTO `screen_demka` (`server_id`, `timestamp`, `admin_name`, `admin_sid`, `admin_ip`, `player_name`, `player_sid`, `player_ip`, `map`, `screen_count`) VALUES (11, 1277238633, 'GwynBleidD', 'STEAM_0:1:20916545', '83.31.175.8', 'GwynBleidD', 'STEAM_0:1:20916545', '83.31.175.8', 'de_dust', 1)
L 06/22/2010 - 21:30:33: [screen.amxx] [CheckHandler] SQL Connection type: mysql

numer w nawiasie - numer błędu
%L po dwukropku - Treść błędu (odczytana z parametru zwróconego do handlera)
"pusta" linia - treść błędu (odczytana funkcją SQL_QueryError)
liczba float - czas realizacji zapytania
Query: - zapytanie do bazy
SQL Connection type: typ bazy z jaką się łączę.

Kod handlera:
Załączony plik  fragment.sma   1,68 KB   49 Ilość pobrań


Kod wywołania zapytania:
format(sQuery, charsmax(sQuery), "INSERT INTO `screen_demka` (`server_id`, `timestamp`, `admin_name`, `admin_sid`, `admin_ip`, `player_name`, `player_sid`, `player_ip`, `map`, `screen_count`) VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
				serverid, get_systime(), admin_name, admin_sid, admin_ip, player_name, player_sid, player_ip, map, 1
			);
			SQL_ThreadQuery(g_SqlTuple, "CheckHandler", sQuery)


Sposobu generowania wartości parametrów nie ma sensu opisywać, gdyż widać w treści zapytania z logu, że zostały wpisane poprawnie. Numer błędu próbowałem już googlować, nic nie znalazłem.

Czy ktoś potrafi zinterpretować ten błąd?

Dodam jeszcze, że:
[ 3] MySQL            RUN   -    mysql_amxx_i386.  v1.8.1.3  pl1   ANY   ANY

Użytkownik GwynBleidD edytował ten post 22.06.2010 21:14
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 22.06.2010

Jeśli używasz wszystkich kolumn możesz olać jeden nawias:
INSERT INTO `screen_demka` VALUES (11, 1277238633, 'GwynBleidD', 'STEAM_0:1:20916545', '83.31.175.8', 'GwynBleidD', 'STEAM_0:1:20916545', '83.31.175.8', 'de_dust', 1)
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 24.06.2010

Nie używam, w tabeli są jeszcze 2 kolumny, jedna o nazwie ID z opcją auto_increment, a druga o nazwie demo_name w której mam zamiar przechowywać nazwę zrobionego dema z pluginu o podobnym działaniu :) (nie ma sensu tworzyć 2ch tabel). Dla kolumny demo_name jest ustalona domyślna wartość także mogę pominąć.

24 czerwiec 2010 - 13:29:
Odświeżam.
Pomoże ktoś z tym błędem?
Odpowiedz

  • +
  • -
Owner123 - zdjęcie Owner123 25.06.2010

SQL_QueryError i zmienna Error[] to jest to samo ;>
BTW. Masz tak za każdym razem ?
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 26.06.2010

Tak, za każdym razem i jak widać parametr i wynik funkcji nie zawsze dają to samo, parę razy już się spotykałem, że jedno z nich nie dawało nic, a drugie właściwy komunikat, ale z takimi "bzdurami" spotykam się pierwszy raz.
Odpowiedz

  • +
  • -
Owner123 - zdjęcie Owner123 29.06.2010

Wykonałem to zapytanie w mojej baziee MySql (dokładnie przekopiowałem kolumny) i żadnych błędów.
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 30.06.2010

Czyli coś z bazą albo serwerem jest nie tak. Mógłbyś jeszcze podać jaką masz wersję modułu SQL w amx?
Odpowiedz

  • +
  • -
Owner123 - zdjęcie Owner123 30.06.2010

Zapytanie wykonałem przez phpmyadmin.
Co prawda mogę sprawdzić czy działa poprzez plugin.
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 30.06.2010

Prosiłbym o to, gdyż nie wiem co szwankuje. U mnie również zapytanie wykonane poprzez phpMyAdmin dało pozytywny rezultat
Odpowiedz

  • +
  • -
Owner123 - zdjęcie Owner123 30.06.2010

U mnie zapytanie nieudane ale coś źle wkleiłem, bo nie mam takich bzdur jak ty:
L 06/30/2010 - 21:37:45: [HamTest.amxx] [CheckHandler] Zapytanie nieudane (6664): on_awp
L 06/30/2010 - 21:37:45: [HamTest.amxx] [CheckHandler] Something is wrong in your syntax obok '' w linii 1
L 06/30/2010 - 21:37:45: [HamTest.amxx] [CheckHandler] 0.00
L 06/30/2010 - 21:37:45: [HamTest.amxx] [CheckHandler] Query: INSERT INTO `screen_demka` (`server_id`, `timestamp`, `admin_name`, `admin_sid`, `admin_ip`, `player_name`, `player_sid`, `player_ip`, `map`, `screen_count`) VALUES (11, 1277238633, 'GwynBleidD', 'STEAM_0:1:20916545', '83.31.175.8', 'GwynBleidD', 'STEAM_0:1:20916545', '83.31.175.8', 'de_dust', 1
L 06/30/2010 - 21:37:45: [HamTest.amxx] [CheckHandler] SQL Connection type:
Posiadam SQLx z AmxModX 1.8.2 hg 17

Edit.
Dobra cofam to. U mnie też wywala bzdury. (Znalazłem błąd, poprawiłem i nagle bzdury wylatują)
Użytkownik Owner123 edytował ten post 30.06.2010 20:43
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 30.06.2010

Także zagadka pozostaje niewyjaśniona ;) A jak wygląda baza, wpis się dodał?
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 12.07.2010

public CheckHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize, Float:time)

Errorcode i Error[] są jakby zamienione miejscami, w diablo mam je odwrotnie, a zgaduje, że kolejność parametrów ma znaczenie... ale to tylko poprawi logi, a błąd zostanie :unsure:

* The handler should look like:
 *
 * @param failstate - One of the three TQUERY_ defines.
 * @param query - Handle to the query, do not free it.
 * @param error - An error message, if any.
 * @param errnum - An error code, if any.
 * @param data - Data array you passed in.
 * @param size - Size of the data array you passed in.
 * @param queuetime - Amount of gametime that passed while the query was resolving.
 * 
 * public QueryHandler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 19.07.2010

Dziękuję Ci Miczu bardzo :) Po naprawieniu tego uchybienia nie wywala żadnego błędu :)
Odpowiedz
Zablokowany