Çözüldü Depodaki İtemlerin Silinmesi

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

sharap

MT Üye
MT Üye
Mesaj
298
Çözümler
15
Beğeni
140
Puan
529
Arkadaşlar Merhaba serverim de başlıkta da belirttiğim gibi itemleri depoya koyup, kapatıp tekrar açtığım da itemler siliniyor. Bir kaç araştırma yaptım tahminimce mysql ile alakalı mysql sürümüm Mysql 8.0 Acaba Safebox tablolarında sıkıntımı yaşıyor yada öyle değilse neden kaynaklanabilir bu durum?

Db Seysr::
SYSERR: Aug 10 16:32:31 :: pid_init:
Start of pid: 2153

SYSERR: Aug 10 16:32:31 :: Start: TABLE_POSTFIX not configured use default
SYSERR: Aug 10 16:32:37 :: Load:  DirectQuery failed(SELECT login FROM block_exception)
SYSERR: Aug 10 16:40:26 :: ChildLoop: AsyncSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'window, pos, count, vnum, socket0, socket1, socket2, attrtype0, attrvalue0, attr' at line 1 (query: REPLACE INTO item (id, owner_id, window, pos, count, vnum, socket0, socket1, socket2, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6) VALUES(10001446, 1, 3, 25, 199, 71001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) errno: 1064)

Safebox Tablosu::
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for safebox
-- ----------------------------
DROP TABLE IF EXISTS `safebox`;
CREATE TABLE `safebox`  (
  `account_id` int UNSIGNED NOT NULL DEFAULT 0,
  `size` smallint UNSIGNED NOT NULL DEFAULT 0,
  `password` varchar(6) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
  `gold` int NOT NULL DEFAULT 0,
  PRIMARY KEY (`account_id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of safebox
-- ----------------------------
INSERT INTO `safebox` VALUES (1, 1, '111111', 0);

SET FOREIGN_KEY_CHECKS = 1;


Yardımcı olan herkese şimdiden teşekkür ederim. İyi Forumlar :)
 
MySQL 8.0'a yükselttikten sonra kaynak kodlarında bazı düzenlemeler yapmanız lazım. Onları yaptınız mı? Yapmadıysanız şuradaki değişikliklere bakabilirsiniz;

Linkleri görebilmek için giriş yap veya kayıt ol.
 
Aynısı bana başka bir filesimde oluyordu. DB core veriyordu. Filesin yorumlarına attığım şeyi kopy paste atıyorum buraya belki yardımcı olur..


Query'lerde 7 efsun var fakat oyunda 8 tanımlı.. item_lenght , constants.cpp , gametype.h dosyalarından 7e çekilmesi gerekiyor. Çekildikten sonra reboot atın item.sql'e empty table yapın. Tüm itemler vs gidecektir. Yedek almadan bu işlemi uygulamayın dikkat edin..

Query'deki efsun ile item_lenght , constants.cpp gametype.h dosyalarını karşılaştırın sizdeki gibi 2 yerde farklı efsunlarsa query'deki neyse onu bu src dosyalarına geçirin. Yedek almayı unutma..
 
MySQL 8.0'a yükselttikten sonra kaynak kodlarında bazı düzenlemeler yapmanız lazım. Onları yaptınız mı? Yapmadıysanız şuradaki değişikliklere bakabilirsiniz;

Linkleri görebilmek için giriş yap veya kayıt ol.
Hocam MmoTutkunları Alt Yapı Files Kullanıyorum Derslerde Yapmıştık zaten öyle hatırlıyorum.

Aynısı bana başka bir filesimde oluyordu. DB core veriyordu. Filesin yorumlarına attığım şeyi kopy paste atıyorum buraya belki yardımcı olur..


Query'lerde 7 efsun var fakat oyunda 8 tanımlı.. item_lenght , constants.cpp , gametype.h dosyalarından 7e çekilmesi gerekiyor. Çekildikten sonra reboot atın item.sql'e empty table yapın. Tüm itemler vs gidecektir. Yedek almadan bu işlemi uygulamayın dikkat edin..

Query'deki efsun ile item_lenght , constants.cpp gametype.h dosyalarını karşılaştırın sizdeki gibi 2 yerde farklı efsunlarsa query'deki neyse onu bu src dosyalarına geçirin. Yedek almayı unutma..

Yorum çok karışık geldi biraz daha açıklama yapılsa daha güzel olurdu :) Yinede teşekkür ederim.

Peki bu olayın yani depodan item silinmesinin;

En son eklediğim sistem MAX_COUNT forumlarda paylaşılan bilgileri kullanarak yaptım. Mysql tablolarını da güncellemem isteniyordu gerekli sistemde. Düzenlemesi de şöyleydi.

Mysqlda Düzenlenmesi Gereken Yerler::
FİX OLARAK

shop_item.sql
`count` smallint(4)unsigned NOT NULL DEFAULT '1',

item.sql
`count` smallint(3)unsigned NOT NULL DEFAULT '0',

safebox.sql
`size` smallint(3)unsigned NOT NULL DEFAULT '0',

içlerini değiştirin.

Bunları ekledim ama farklılıklar vardı bu olaydan kaynaklı olabilir mi acaba ?
 
Son düzenleme:
Hangi bölümdeki window hocam tam anlayamadım da biraz daha açıklarmıssınız rica etsem? Teşekkür ederim.
Syserrde window pos count yazıyor ya onu clientmanager.cpp de arat sonra sadece window’u tırnak içine al. Kesme işareti değil tırnak işareti ile.
 
Çözüm
Syserrde window pos count yazıyor ya onu clientmanager.cpp de arat sonra sadece window’u tırnak içine al. Kesme işareti değil tırnak işareti ile.

Bu şekildemi olması gerekiyor tam olarak ?

Kod::
        char szQuery[512];

        snprintf(szQuery, sizeof(szQuery),
            "REPLACE INTO item%s (id, owner_id, `window`, pos, count, vnum, socket0, socket1, socket2, "
            "attrtype0, attrvalue0, "
            "attrtype1, attrvalue1, "
            "attrtype2, attrvalue2, "
            "attrtype3, attrvalue3, "
            "attrtype4, attrvalue4, "
            "attrtype5, attrvalue5, "
            "attrtype6, attrvalue6) "
            "VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
            GetTablePostfix(),
            p->id,
            p->owner,
            p->window,
            p->pos,
            p->count,
            p->vnum,
 
Bu şekildemi olması gerekiyor tam olarak ?

Kod::
        char szQuery[512];

        snprintf(szQuery, sizeof(szQuery),
            "REPLACE INTO item%s (id, owner_id, `window`, pos, count, vnum, socket0, socket1, socket2, "
            "attrtype0, attrvalue0, "
            "attrtype1, attrvalue1, "
            "attrtype2, attrvalue2, "
            "attrtype3, attrvalue3, "
            "attrtype4, attrvalue4, "
            "attrtype5, attrvalue5, "
            "attrtype6, attrvalue6) "
            "VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
            GetTablePostfix(),
            p->id,
            p->owner,
            p->window,
            p->pos,
            p->count,
            p->vnum,
Evet
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst