- Mesaj
- 47
- Çözümler
- 1
- Beğeni
- 7
- Puan
- 424
- Ticaret Puanı
- 0
İyi forumlar herkese, db core dosyasını açınca şöyle bir hatayla karşılaştım ancak çözüme kavuşturamadım. Sanki ufak bir şeyi gözümden kaçırıyormuşum gibi hissediyorum ancak çözümü belki sizler bulabilirsiniz diye umuyorum.
InitializeShopTable'ın 501. satırını aşağıda vurguladım.
InitializeShopTable'ın false döndüğü fark ettim ve bu da table count'unun 0 olduğunu belirtiyor sanırsam. Bunu görünce o zaman SQL Query'sinin hiçbir row'u dönmüyor olması gerektiğini düşündüm ancak hatadaki query'i navicat üzerinde executelayınca rowların döndüğünü gördüm. Shop ve shop_item table'ları databasede mevcut ve entryleri de var, sorunun database bağlantımda olabilceğini düşünüyorum ancak nasıl kontrol edebilirim bilemedim. Bilen biri yardımcı olabilirse sevinirim.
Bir de core'u incelerken en üstteki "no symbol table info available" yazısının çıkması normal mi acaba? Liblerde bir problem mi yaşıyorum yoksa bir sorun yaratmaz mı bilemedim de.
Bu da /usr/game/cores/db'deki conf.txt dosyam :
gdb / bt full:
(gdb) bt full
#0 0x2852ed5b in thr_kill () from /lib/libc.so.7
No symbol table info available.
#1 0x284c2a56 in pthread_sigmask () from /lib/libthr.so.3
No symbol table info available.
#2 0x284c32ab in raise () from /lib/libthr.so.3
No symbol table info available.
#3 0x285d96ba in abort () from /lib/libc.so.7
No symbol table info available.
#4 0x2861c7b0 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libsupc++.so.1
No symbol table info available.
#5 0x2862101a in std::set_unexpected () from /usr/lib/libsupc++.so.1
No symbol table info available.
#6 0x28621062 in std::terminate () from /usr/lib/libsupc++.so.1
No symbol table info available.
#7 0x28620f5a in __cxa_throw () from /usr/lib/libsupc++.so.1
No symbol table info available.
#8 0x2861a76e in operator new () from /usr/lib/libsupc++.so.1
No symbol table info available.
#9 0x2846293d in operator new[] () from /usr/lib/libstdc++.so.6
No symbol table info available.
#10 0x08080d66 in CClientManager::InitializeShopTable (this=0xbfbfe37c) at ClientManagerBoot.cpp:501
data = 0x0
pRes2 = (SQLResult *) 0x29109130
map_shop = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const int, SShopTable*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const int, SShopTable*> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red,
_M_parent = 0x29102de0, _M_left = 0x29102d00, _M_right = 0x29106080}, _M_node_count = 28}}}
shop_table = (TShopTable *) 0x2ae78900
s_szQuery = 0x814bcf0 "SELECT shop.vnum, shop.npc_vnum, shop_item.item_vnum, shop_item.count FROM shop LEFT JOIN shop_item ON shop.vnum = shop_item.shop_vnum ORDER BY shop.vnum, shop_item.item_vnum"
__FUNCTION__ = "InitializeShopTable"
#11 0x080820fe in CClientManager::InitializeTables (this=0xbfbfe37c) at ClientManagerBoot.cpp:40
__FUNCTION__ = "InitializeTables"
#12 0x08063448 in CClientManager::Initialize (this=0xbfbfe37c) at ClientManager.cpp:111
tmpValue = <value optimized out>
szBindIP = "\023\000\000\000▒▒\\(t\005_(\000\000\000\000▒\206\001\000\000\000\000\000t\005_(▒\177`(▒\177`(▒߿▒q▒](\030\200`(\000▒\210(3\000\000\000t\005_(t\005_(\000\000\000\000▒߿▒Ӵ](▒\177`(▒+_(<X\024\b`p`(<X\024\b▒\bڰ\023\b▒\177`(▒\177`(\030\005\000\000\000▒"
iChinaEventServer = <value optimized out>
__FUNCTION__ = "Initialize"
#13 0x0805512e in Start () at Main.cpp:381
iRetry = 5
tmpValue = 304
heart_beat = 10
szBuf = " \000tin1\000▒▒h}N(\000\f8(\t▒\004\b▒I<\a0▒\202\r ▒7(\001\000\000\000\000\f8(h}N(▒▒7(\000\0008(x▒▒▒6(▒▒@(\030\000\000\000T▒\201(\025\000\000\000▒\024A(\230<\t▒\004\b▒I<\a0▒\202\r ▒7(\001\000\000\000\000\f8(h}N(▒▒7(\000\0008(xT`▒6(\025,\024\b$$\034\000\000\000\n▒\005@\000\0008(\000\0028(\000\0048(\000\0068(\000\b8(\000\n8(\000\f8((▒\200"...
iDisableHotBackup = -1077941192
iIDStart = 100
szAddr = "localhost\000\000\000\000\f8(4쿿▒뿿▒꿿X㿿▒^6(\000\0008(\000\006\000\000\000\000\000\000▒迿▒迿8쿿4쿿"
szDB = "hotbackup\000▒▒\000\000\000\000X㿿▒\206\b\b\001\000\000\000▒▒6(▒7(▒\024㿿▒뿿▒꿿\177\022\200(\000▒\200(▒▒\200("
szUser = "mt2\000▒I<\a▒7(▒▒▒6(\000▒7(h}N(▒▒7(▒뿿▒7(\024㿿T▒6(\204▒7(▒\004㿿"
szPassword = "mt2\000▒\b\000\000\000\a\000\000\000▒7(\000\000\000\000\000\0008(▒\001▒6(\000\0008(▒\000\000\000l▒\201(\017▒6(▒▒\200(▒\004\b\t▒\004\b"
iPort = 3306
line = "localhost hotbackup mt2 mt2 3306\000(▒~B\b\200\000\000\000\n\000\000\000▒~B\b\200\2306(▒DO(▒▒\004\b\000▒\201(▒~B\b@\000\000\000\006\000\000\000▒~B\b\000H▒▒N(\002\000\002\000▒7(\000\000\000\000\000\f8($▒▒6(\20---Type <return> to continue, or q <return> to quit---
1\005\000\000\004\000\000\000▒~B\b\002\000\000\000 \000\000\000▒~B\b\001\000\000\000\000YhU(\000\000\000\000@\rN(▒@U(t\005_(\021\000\000\000\004\000\000\000▒@U(t\005_(\024\000\000\000$8Yh"...
__FUNCTION__ = "Start"
InitializeShopTable'ın 501. satırını aşağıda vurguladım.
bool CClientManager::InitializeShopTable():
bool CClientManager::InitializeShopTable()
{
MYSQL_ROW data;
int col;
static const char * s_szQuery =
"SELECT "
"shop.vnum, "
"shop.npc_vnum, "
"shop_item.item_vnum, "
"shop_item.count "
"FROM shop LEFT JOIN shop_item "
"ON shop.vnum = shop_item.shop_vnum ORDER BY shop.vnum, shop_item.item_vnum";
std::auto_ptr<SQLMsg> pkMsg2(CDBManager::instance().DirectQuery(s_szQuery));
// shopÀÇ vnumÀº Àִµ¥ shop_item ÀÌ ¾øÀ»°æ¿ì... ½ÇÆзΠó¸®µÇ´Ï ÁÖÀÇ ¿ä¸Á.
// °íó¾ßÇҺκÐ
SQLResult * pRes2 = pkMsg2->Get();
if (!pRes2->uiNumRows)
{
sys_err("InitializeShopTable : Table count is zero.");
return false;
}
std::map<int, TShopTable *> map_shop;
if (m_pShopTable)
{
delete [] (m_pShopTable);
m_pShopTable = NULL;
}
TShopTable * shop_table = m_pShopTable;
while ((data = mysql_fetch_row(pRes2->pSQLResult)))
{
col = 0;
int iShopVnum = 0;
str_to_number(iShopVnum, data[col++]);
if (map_shop.end() == map_shop.find(iShopVnum))
{
shop_table = new TShopTable;
memset(shop_table, 0, sizeof(TShopTable));
shop_table->dwVnum = iShopVnum;
map_shop[iShopVnum] = shop_table;
}
else
shop_table = map_shop[iShopVnum];
str_to_number(shop_table->dwNPCVnum, data[col++]);
if (!data[col]) // ¾ÆÀÌÅÛÀÌ Çϳªµµ ¾øÀ¸¸é NULLÀÌ ¸®ÅÏ µÇ¹Ç·Î..
continue;
TShopItemTable * pItem = &shop_table->items[shop_table->byItemCount];
str_to_number(pItem->vnum, data[col++]);
str_to_number(pItem->count, data[col++]);
++shop_table->byItemCount;
}
m_pShopTable = new TShopTable[map_shop.size()];
m_iShopTableSize = map_shop.size();
typeof(map_shop.begin()) it = map_shop.begin();
int i = 0;
while (it != map_shop.end())
{
thecore_memcpy((m_pShopTable + i), (it++)->second, sizeof(TShopTable));
sys_log(0, "SHOP: #%d items: %d", (m_pShopTable + i)->dwVnum, (m_pShopTable + i)->byItemCount);
++i;
}
return true;
}
InitializeShopTable'ın false döndüğü fark ettim ve bu da table count'unun 0 olduğunu belirtiyor sanırsam. Bunu görünce o zaman SQL Query'sinin hiçbir row'u dönmüyor olması gerektiğini düşündüm ancak hatadaki query'i navicat üzerinde executelayınca rowların döndüğünü gördüm. Shop ve shop_item table'ları databasede mevcut ve entryleri de var, sorunun database bağlantımda olabilceğini düşünüyorum ancak nasıl kontrol edebilirim bilemedim. Bilen biri yardımcı olabilirse sevinirim.
Bir de core'u incelerken en üstteki "no symbol table info available" yazısının çıkması normal mi acaba? Liblerde bir problem mi yaşıyorum yoksa bir sorun yaratmaz mı bilemedim de.
Bu da /usr/game/cores/db'deki conf.txt dosyam :
/usr/game/cores/db/conf.txt:
WELCOME_MSG = "DB Server Acildi"
SQL_ACCOUNT = "localhost account mt2 mt2 3306"
SQL_PLAYER = "localhost player mt2 mt2 3306"
SQL_COMMON = "localhost common mt2 mt2 3306"
SQL_HOTBACKUP = "localhost hotbackup mt2 mt2 3306"
TABLE_POSTFIX = " "
BIND_PORT = 15900
DB_SLEEP_MSEC = 10
CLIENT_HEART_FPS = 10
HASH_PLAYER_LIFE_SEC = 600
BACKUP_LIMIT_SEC = 3600
PLAYER_ID_START = 100
PLAYER_DELETE_LEVEL_LIMIT = 70
ITEM_ID_RANGE = 2000000000 2100000000
LOCALE = "latin1"