Hola mi gente, bueno como dice el titulo uso Files + sourse Update 13 de
@louis . tengo un server funcionando y todo normal, pero me he dado cuenta que me esta generando cierta cantidad de errores extraños, algunos que afectan 100% el servidor.
en primera instancia el error que me lanza el dataserver es el siguiente
al percatarme de esto me dirijo a ver los logs que me genera dicho error y esto es lo que aparece
18:01:05 SELECT WCoinC,WCoinP,GoblinPoint FROM CashShopData WHERE AccountID=''A'
18:01:05 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Sintaxis incorrecta cerca de 'A'.
18:01:05 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Falta la comilla de cierre después de la cadena de caracteres ''.
18:01:05 INSERT INTO CashShopData (AccountID,WCoinC,WCoinP,GoblinPoint) VALUES (''A',0,0,1)
18:01:05 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Sintaxis incorrecta cerca de 'A'.
18:01:05 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Falta la comilla de cierre después de la cadena de caracteres ',0,0,1)'.
18:01:07 SELECT WCoinC,WCoinP,GoblinPoint FROM CashShopData WHERE AccountID=''A'
18:01:07 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Sintaxis incorrecta cerca de 'A'.
18:01:07 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Falta la comilla de cierre después de la cadena de caracteres ''.
18:01:07 INSERT INTO CashShopData (AccountID,WCoinC,WCoinP,GoblinPoint) VALUES (''A',0,0,1)
18:01:07 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Sintaxis incorrecta cerca de 'A'.
18:01:07 [QueryManager] State (42000), Diagnostic: [Microsoft][ODBC SQL Server Driver][SQL Server]Falta la comilla de cierre después de la cadena de caracteres ',0,0,1)'.
Luego voy a revisar la tabla CashShopData de sql y me encuentro con estas aberraciones :(
Creí que mi base del servidor estaba corrupta y me dirijo a la base limpia que tengo para pruebas instalada en lan y me encuentro con el mismo problema.
Luego me dirijo al sourse a ver cual es el problema segun me indica el log el problema deberia ser en esta seccion
void CCashShop::GDCashShopPointRecv(SDHP_CASH_SHOP_POINT_RECV* lpMsg,int index) // OK
{
#if(DATASERVER_UPDATE>=501)
SDHP_CASH_SHOP_POINT_SEND pMsg;
pMsg.header.set(0x18,0x00,sizeof(pMsg));
pMsg.index = lpMsg->index;
memcpy(pMsg.account,lpMsg->account,sizeof(pMsg.account));
pMsg.result = 0;
if(gQueryManager.ExecQuery("SELECT * FROM CashShopData WHERE AccountID='%s'",lpMsg->account) == 0 || gQueryManager.Fetch() == SQL_NO_DATA)
{
gQueryManager.Close();
if(gQueryManager.ExecQuery("INSERT INTO CashShopData (AccountID,WCoinC,WCoinP,GoblinPoint) VALUES ('%s',0,0,0)",lpMsg->account) == 0)
{
gQueryManager.Close();
pMsg.result = 1;
}
else
{
gQueryManager.Close();
pMsg.WCoinC = 0;
pMsg.WCoinP = 0;
pMsg.GoblinPoint = 0;
}
}
else
{
pMsg.WCoinC = gQueryManager.GetAsInteger("WCoinC");
pMsg.WCoinP = gQueryManager.GetAsInteger("WCoinP");
pMsg.GoblinPoint = gQueryManager.GetAsInteger("GoblinPoint");
gQueryManager.Close();
}
gSocketManager.DataSend(index,(BYTE*)&pMsg,sizeof(pMsg));
#else
SDHP_CASH_SHOP_POINT_SEND pMsg;
pMsg.header.set(0x18,0x00,sizeof(pMsg));
pMsg.index = lpMsg->index;
memcpy(pMsg.account,lpMsg->account,sizeof(pMsg.account));
pMsg.result = 1;
if(gQueryManager.ExecQuery("EXEC WZ_GetCoin '%s'",lpMsg->account) == 0 || gQueryManager.Fetch() == SQL_NO_DATA)
{
pMsg.WCoinC = 0;
pMsg.WCoinP = 0;
pMsg.GoblinPoint = 0;
gQueryManager.Close();
}
else
{
pMsg.WCoinC = gQueryManager.GetResult(0);
pMsg.WCoinP = gQueryManager.GetResult(1);
pMsg.GoblinPoint = gQueryManager.GetResult(2);
gQueryManager.Close();
}
gSocketManager.DataSend(index,(BYTE*)&pMsg,sizeof(pMsg));
#endif
}
Pero no encuentro ningún problema en este código, el caso es que han aparecido usuarios que se bugean cuando el dataserver les pone cantidades absurdas de coins y goblin, nombres locos en toda la base de CashshopData. agradecería algún coder experimentado me ayudara con este tema.