Szerző Téma: mysql probléma  (Megtekintve 1894 alkalommal)

mysql probléma
« Dátum: 2020. február 03. - 17:33:30 »
0 Show voters
Szia,ebben tud valaki segiteni ?
 [22:31:34] [DEBUG] mysql_format - connection: 1, len: 1024, format: "INSERT INTO `players` (id,pName,pKor,pNem,pSzarmazas,pOnline ) VALUES('%d','%s','%d','%s','%s','1')"
[22:31:34] [DEBUG] mysql_tquery - connection: 1, query: "INSERT INTO `players` (id,pName,pKor,pNem,pSzarmazas,pOnline ) V", callback: "(null)", format: "(null)"
[22:31:34] [DEBUG] mysql_format - connection: 1, len: 1024, format: "UPDATE `accounts` SET `char_1` = '%i' WHERE `id` = '%i' "
[22:31:34] [DEBUG] CMySQLQuery::Execute[] - starting query execution
[22:31:34] [DEBUG] mysql_query - connection: 1, query: "UPDATE `accounts` SET `char_1` = '0' WHERE `id` = '0' ", use_cache: true
[22:31:34] [DEBUG] CMySQLQuery::Execute[] - query was successfully executed within 5.819 milliseconds
[22:31:34] [DEBUG] CMySQLQuery::Execute[] - no callback specified, skipping result saving
[22:31:34] [DEBUG] CMySQLQuery::Execute - starting query execution
[22:31:34] [DEBUG] CMySQLQuery::Execute - query was successfully executed within 9.759 milliseconds
[22:31:34] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[22:31:35] [DEBUG] CMySQLHandle::SaveActiveResult - cache saved (id: 3)
[22:31:35] [DEBUG] mysql_format - connection: 1, len: 1024, format: "SELECT * FROM `players` WHERE `id` = '%i'"
[22:31:35] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `players` WHERE `id` = '0'", callback: "LoadCharacter", format: "i"
[22:31:35] [DEBUG] CMySQLQuery::Execute[LoadCharacter] - starting query execution
[22:31:35] [DEBUG] CMySQLQuery::Execute[LoadCharacter] - query was successfully executed within 0.870 milliseconds
[22:31:35] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[22:31:35] [DEBUG] Calling callback "LoadCharacter"..
[22:31:35] [DEBUG] cache_get_data - connection: 1
[22:31:35] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[22:38:49] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE `players` SET `pOnline` = '0'", callback: "(null)", format: "(null)"
[22:38:49] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[22:38:49] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[22:38:49] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[22:38:49] [DEBUG] CMySQLConnection::Connect - connection was successful
[22:38:49] [DEBUG] mysql_query - connection: 1, query: "UPDATE `vehicles` SET `vID` = '-1'", use_cache: true
[22:38:49] [DEBUG] CMySQLConnection::Connect - connection was successful
[22:38:49] [DEBUG] CMySQLConnection::Connect - connection was successful
[22:38:49] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[22:38:49] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[22:38:49] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[22:38:49] [DEBUG] CMySQLQuery::Execute - starting query execution
[22:38:49] [DEBUG] CMySQLQuery::Execute[] - starting query execution
[22:38:49] [DEBUG] CMySQLQuery::Execute - query was successfully executed within 4.29 milliseconds
[22:38:49] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[22:38:49] [DEBUG] CMySQLQuery::Execute[] - query was successfully executed within 3.692 milliseconds
[22:38:49] [DEBUG] CMySQLQuery::Execute[] - no callback specified, skipping result saving
[22:38:49] [DEBUG] CMySQLHandle::SaveActiveResult - cache saved (id: 1)
[22:38:49] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `vehicles` WHERE `TulajSQLID` = '0'", callback: "OnVehicleLoad", format: "(null)"
 
 
« Utoljára szerkesztve: 2020. február 03. - 22:42:22 írta willianhunt »

Nem elérhető AnthonyGates

  • 546
  • AnthonyGates
    • Profil megtekintése
Re:mysql probléma
« Válasz #1 Dátum: 2020. február 04. - 07:17:45 »
0 Show voters
Szia. Vagy nem másoltad be az egészet, vagy nem jelenik meg, vagy nincs is hiba. Ez, amennyit látok belőle, sima debug log.

Re:mysql probléma
« Válasz #2 Dátum: 2020. február 04. - 11:09:30 »
0 Show voters
Szia, ez megolva! de van egy olyan dolog hogy össze akarom kötni a accounts rendszer a players-sel de nem tudom mivel nem hozza létre az idjét vagy létrehozza csak 0 változó ként hozza létre ez miért van?
azért van mert nem spawnolt le a player és nem tudja meghatározni az idjét? ha igen akkor mit kell tegyek hogy hozza létre ahogy kell ?
 
INSERT INTO `players` (id,pName) VALUES('0','Test_Elek')
[00:23:55]  UPDATE `accounts` SET `char_2` = '0' WHERE `Felhasznalonev` = 'test'

Nem elérhető AnthonyGates

  • 546
  • AnthonyGates
    • Profil megtekintése
Re:mysql probléma
« Válasz #3 Dátum: 2020. február 04. - 11:29:36 »
0 Show voters
Egyszeruen tedd az ilyen ID-ket auto increment mezővé, nem kell számolnod semmit hogy egyedi kulcsot kapjon minden karakter.

Re:mysql probléma
« Válasz #4 Dátum: 2020. február 04. - 12:50:21 »
0 Show voters
Adatbázisban be van állítva  ID-hez auto increment karakter de nem kéri le az idjét az minek van ?
« Utoljára szerkesztve: 2020. február 04. - 12:52:50 írta willianhunt »

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Re:mysql probléma
« Válasz #5 Dátum: 2020. február 04. - 13:22:24 »
0 Show voters
Insertnél miért adsz meg ID-nek értéket?
Legyen az id mező auto_increment.

Ajánlom a következő struktúrát:
account.id
player.accountId

VAGY egy kapcsolótáblát igény esetén:

conPlayerAccount
accountId
playerId
createdAt

Tanulj SQL-t SA:MP-tól független, JOIN-okat, Subquery-ket, TRIGGER-eket, stb, és fuss neki még egyszer a dolognak.

A következőt akarod (ha jól értem):
INSERT-elni a players táblába, majd lekérdezni az beszúrt rekord id mezőjének értékét, és bele updateelni az accounts.char_1 mező értékébe felhasználó id alapján.

Forrás: https://wiki.sa-mp.com/wiki/MySQL#cache_insert_id

( Ennyi SA:MP elég volt még 1 évre )

Re:mysql probléma
« Válasz #6 Dátum: 2020. február 04. - 18:34:58 »
0 Show voters
Köszi, de akar hogy csinálom akkor se jó szerintem az a gond hogy nem Spawnoltam le a karakterrel és így nem tudja meg határozni az idjét a karakternek és azért írja mindig 0-t

így is jónak kell lennie nem? sehogy se tudom lekérni a players idjét!
stock setPlayerKarakterreg(playerid) {

new tempStr[4][32];
 
 

new tempStrnev[32];
GetPVarString(playerid, #Felhasznalonev, tempStrnev, 32);

GetPVarString(playerid, #pName, tempStr[0], 32);
GetPVarString(playerid, #pKor, tempStr[1], 32);
GetPVarString(playerid, #pNem, tempStr[2], 32);
GetPVarString(playerid, #pSzarmazas, tempStr[3], 32);

new i = cache_insert_id(0);
     

mysql_format(g_SQL,mysql_uzenet,sizeof(mysql_uzenet),"INSERT INTO `players` (id,pName) VALUES('%i','%s')",  pInfo[i][id],tempStr[0]);
mysql_tquery(g_SQL, mysql_uzenet );
printf("Karakteruzi: %s",mysql_uzenet);

 
mysql_format(g_SQL,mysql_uzenet,sizeof(mysql_uzenet),"UPDATE `accounts` SET `char_2` = '%i' WHERE `Felhasznalonev` = '%s' ", accInfo[i][accountid], tempStrnev);
mysql_query(g_SQL,mysql_uzenet);
printf("Accountuzi: %s",mysql_uzenet);

 

 

hideCharPanel(playerid);

SCM(playerid, HEX_WHITE, "Karaktered elkészült!");
showCharPanel(playerid);
LoadCharacterSelection(playerid);


 
           


return 1;
}
 
« Utoljára szerkesztve: 2020. február 04. - 19:00:52 írta willianhunt »

Re:mysql probléma
« Válasz #7 Dátum: 2020. február 05. - 17:51:20 »
0 Show voters
hali, valaki tud ebben segíteni ?

[17:44:35] [ERROR] mysql_format - invalid connection handle (id: 0)
[17:44:35] [ERROR] mysql_tquery - invalid connection handle (id: 0)
[17:44:35] [ERROR] mysql_format - invalid connection handle (id: 0)
[17:44:35] [ERROR] mysql_query - invalid connection handle (id: 0)
[17:44:35] [ERROR] mysql_format - invalid connection handle (id: 0)
[17:44:35] [ERROR] mysql_tquery - invalid connection handle (id: 0)

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Re:mysql probléma
« Válasz #8 Dátum: 2020. február 06. - 10:29:07 »
0 Show voters
Nem, nem ... Te az egész SQL működését nem érted.

Amikor INSERT-el beszúrt egy rekordot egy táblába, és ha van neki egy mezője (általában id) ami AUTO_INCREMENT akkor ha a legutolsó rekordod id értéke 32, akkor a következőé 33 lesz, tehát 1-el inkrementálódik. Neked az kell, hogy a beszúrt rekordodnak mi az azonosítójának az értéke, tehát az INSERT parancs után kell lekérdezned a beszúrt azonosítót a cache_insert_id() függvénnyel, aminek a működésére van megannyi téma külföldi fórumon + wiki-n. Ha nem vagy lespawnolva de létrehozod a karaktert, és lefuttatod a cache_insert_id() lekérdezést, akkor is vissza kell kapnod a létrejött rekord id-jét, teljesen független az SQL a játéktól, ezt kell megértened, azt a választ kapod amit kapnod kell, nézz SQL tutorial videókat, mert így nem fog menni a fejlesztés ha nem érted azt amit csinálsz. Amikor inicializálod a mysql_connect-et, be kell mentened a connection handlet egy globális változóba, amire tudsz hivatkozni minden MySQL függvény hívásnál, pl: mysql_query(CONNECTIONHANDLER, QUERY);, a "invalid connection handle" hibaüzenet annyit takar, hogy hibás connectionhandlert adtál meg, gondolom ez a cache_insert_id(0) miatt lehet.

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Re:mysql probléma
« Válasz #9 Dátum: 2020. február 06. - 10:32:32 »
0 Show voters
Őőő illetve valami olyasmi rémlik hogy csak abban az esetben fogod tudni használni a cache_insert_id()-t, ha a mysql_tquery-ben megadsz egy függvényt (vagy pquery, lényeg hogy legyen neki egy callable functionje), és már azon belül fogod tudni elérni, viszont volt rá valami workaround hogy cachelted valahogy a queryt és az adott folyamaton belül letudtad kérdezni, erre majd valaki ír aki jelenleg is fejleszt pawn-ban, mivel már erre nem tudok példa kódot biztosítani, maximum logikát. :)

Nem elérhető gbr333

  • 670
    • Profil megtekintése
Re:mysql probléma
« Válasz #10 Dátum: 2020. február 06. - 13:56:10 »
0 Show voters
Jól mondja whadez.

Tessék, így próbáld meg:

stock setPlayerKarakterreg(playerid) {

new tempStr[4][32];

GetPVarString(playerid, #pName, tempStr[0], 32);
GetPVarString(playerid, #pKor, tempStr[1], 32);
GetPVarString(playerid, #pNem, tempStr[2], 32);
GetPVarString(playerid, #pSzarmazas, tempStr[3], 32);

mysql_format(g_SQL,mysql_uzenet,sizeof(mysql_uzenet),"INSERT INTO `players` (pName) VALUES('%s')",tempStr[0]);
mysql_tquery(g_SQL, mysql_uzenet,"OnCharacterCreate","i",playerid);
printf("Karakteruzi: %s",mysql_uzenet);
return 1;
}

forward OnCharacterCreate(playerid);
public OnCharacterCreate(playerid)
{
new tempStrnev[32];

GetPVarString(playerid, #Felhasznalonev, tempStrnev, 32);

mysql_format(g_SQL,mysql_uzenet,sizeof(mysql_uzenet),"UPDATE `accounts` SET `char_2` = %i WHERE `Felhasznalonev` = '%s' ", cache_insert_id(), tempStrnev);
mysql_query(g_SQL,mysql_uzenet);
printf("Accountuzi: %s",mysql_uzenet);

hideCharPanel(playerid);
SCM(playerid, HEX_WHITE, "Karaktered elkészült!");
showCharPanel(playerid);
LoadCharacterSelection(playerid);
return 1;
}
« Utoljára szerkesztve: 2020. február 06. - 13:58:06 írta rolux »

Re:mysql probléma
« Válasz #11 Dátum: 2020. február 07. - 23:58:02 »
0 Show voters
Szia, köszönöm a segítséget! 
 minek adja ki ezt és miért nem írja ki a játékba a nevet mi a probléma?
 [WARNING] cache_get_data - no active cache
« Utoljára szerkesztve: 2020. február 08. - 01:30:31 írta willianhunt »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal