Worldserver hiba.

Indította nagyattila, 2013 április 09, 02:22:39 DÉLUTÁN

Előző téma - Következő téma

nagyattila

Hello. Lenne egy kis problémám, amikor elindítom a Worldservert, ezt a hibaüzenetet kapom:

In mysql_stmt_prepare() id: 56, sql: "SELECT difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction_A, faction_H, npcflag, speed_walk, speed_run, scale, rank, mindmg, maxdmg, dmgschool, attackpower, dmg_multiplier, baseattacktime, rangeattacktime, unit_class, unit_flags, unit_flags2, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, minrangedmg, maxrangedmg, rangedattackpower, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, Health_mod, Mana_mod, Armor_mod, RacialLeader, questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, movementId, RegenHealth, equipment_id, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ?"


MySQL fut, Authserver is szépen felfut. Mi lehet a gond? (Legújabb MySQL + legújabb TDB van fent)

Shyro

Ezt érdemes végigcsinálni, előlröl:
http://collab.kpsn.org/display/tc/Installing+TDB+4.3.4

Kifejezetten ügyelj az Update részre!
makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

Bocsánat, a legújabb TDB-t a WOTLK Contentre értettem. (3.3.5; build 12340)


Shyro

Ha jól gondolom, akkor neked ez kell:
http://www.trinitycore.org/f/files/file/5-tdb-full-updates/

Viszont, a hiba, amit a World böfög, az a megfelelő Update - ek hiányától van. Miért? (Akkor kicsit részletesebben)

(1) Mi miatt kapod a hibát?

MYSQL_STMT* stmt = mysql_stmt_init(m_Mysql);
if (!stmt)
{
  sLog->outError(LOG_FILTER_SQL, "In mysql_stmt_init() id: %u, sql: \"%s\"", index, sql);
  sLog->outError(LOG_FILTER_SQL, "%s", mysql_error(m_Mysql));
  m_prepareError = true;
}
else
{
if (mysql_stmt_prepare(stmt, sql, static_cast<unsigned long>(strlen(sql))))
  {
    sLog->outError(LOG_FILTER_SQL, "In mysql_stmt_prepare() id: %u, sql: \"%s\"", index, sql);
    sLog->outError(LOG_FILTER_SQL, "%s", mysql_stmt_error(stmt));
    mysql_stmt_close(stmt);
    m_prepareError = true;
  }
  else
  {
    MySQLPreparedStatement* mStmt = new MySQLPreparedStatement(stmt);
    m_stmts[index] = mStmt;
  }
}


Van egy API a MySQL - nek a C - hez, hogy mindenféle jóságot csinálhass. Noss, ez azt mondja...

MYSQL_STMT* stmt = mysql_stmt_init(m_Mysql);


...hogy kapsz egy mysql_stmt adatszerkezetre mutató pointert, nem lényeges. Viszont, hogy mivel tér vissza, az annál inkább. 0 - val ha kevés a memória. Ez nem áll fenn, az első elagázás else ága teljesül. Okés.

(2) Következő elágazás mit mond:
Azt, hogy a...

mysql_stmt_prepare(stmt, sql, static_cast<unsigned long>(strlen(sql)))


...valami olyannal tér vissza, ami nekünk nem jó. Mikkel térhet vissza? Ez már jóval többet árul el nekünk, mint az init! Ha 0, akkor minden teljesen korrekt. Ha mindenféle egyéb számmal (azt remélem nem kell említeni, hogy elágazásnál a 0 HAMIS, míg a 0< IGAZ), akkor az mindenféle hibát jelöl:

  • CR_COMMANDS_OUT_OF_SYNC
  • CR_OUT_OF_MEMORY (ugye ezt már kilőttük)
  • CR_SERVER_GONE_ERROR
  • CR_SERVER_LOST
  • CR_UNKNOWN_ERROR
Itt jön a tippmix, a 2. kilőve, 3. és 4. is (mivel fut az a MySQL), marad az 1. és a 5. hiba. Ettől még mindig nem lettünk okosabbak, de mindezt kiegészítve: tudjuk, hogy a prepare függvénynek átadsz egy SQL utasítást is (ami a kódban sql), és amit megkaptál a hibaüzenetben is. Magyarul valami nem stimmel a DB - dben, amire szerencsétlen prepare hibát dob, hiszen az a hosszú "SELECT..." - es akármi nem elvégezhető az adatbázisodban.

Erre mondják a hivatalos TrinityCore fórumon, hogy:
Idéz
Drop your f**n' databases and do it again, yo. Do not forget about the updates, dude!

Így az, amit legelőször linkeltem jó, csak megfelelő verziójú TDB - vel hegessz. Okés? :)
makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

#4
Nagyon szépen köszi mindent. :)

De ... Ha ugye importáltam a World-ot, akkor honnan rakjam fel a megfelelő updateket, ha az oldalon azt írja, hogy : Do not import the SQL files from the core repository, TrinityCore/sql/updates/world. :/

Shyro

A leírás az azért linkeltem, hogy megértsd hogyan működik a történet. A lényeg, hogy történnek változások a core - ban és az adatbázisban is. Adatbázisnál a változásokat feltöltik sql fájl formájában, hogy ha a változástatás utáni core - al rendelkezel, update - elhesd az adatbázisod. Ha nem teszed meg, a core reklamálni fog. Ahogyan az történt.

Ha már sok változás történt, sok sql fájl összegyűlt, akkor (hogy ne kelljen update - elgetni) kiadnak egy ilyen FULL_TDB pack - ot, amiben addig  a pontig történt fix változások benne lesznek. De, a FULL_TDB után is történnek változtatások. Ezért írja, hogy ha meg is van a FULL_TDB, tessék updatelni, mert valószínüleg lesz olyan, amit nem tartalmaz.

A Te esetedben is ugyanez a helyzet, csak nálad jelenleg a FULL_TDB minden update - t tartalmaz. A WoTLK - t legjobb tudomásom szerint már nem igazán fejlesztik, így nem lesz +50 sql hozzá. Nem próbáltam ki, de így neked csak
TDB_full_335.51_2013_02_14.7z
erre lesz szükséged. Ugyanis ez a legfrisebb verzió a FULL_TDB + 51 - es update.

Ha nem WoTLK - d lenne, akkor
TDB_full_434.04_2013_02_14.7z
ezt kellene letöltened, és az ehhez tartozó 05 - ös sql - eket.
makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

oké, ez meg is lenne, mármint importáltam a TDB_full_335.51_2013_02_14.7z-t. Ezen kívül milyen update kell hogy menjen, mert még mindig nem megy ...

Shyro

makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

Nem, mostmár sokkal több:


In mysql_stmt_prepare() id: 152, sql: "UPDATE guild_member SET BankRemMoney = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemMoney' in 'field list'
In mysql_stmt_prepare() id: 153, sql: "UPDATE guild_member SET BankResetTimeMoney = ?, BankRemMoney = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeMoney' in 'field list'
In mysql_stmt_prepare() id: 154, sql: "UPDATE guild_member SET BankResetTimeMoney = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeMoney' in 'field list'
In mysql_stmt_prepare() id: 157, sql: "UPDATE guild_member SET BankResetTimeTab0 = ?, BankRemSlotsTab0 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeTab0' in 'field list'
In mysql_stmt_prepare() id: 158, sql: "UPDATE guild_member SET BankResetTimeTab1 = ?, BankRemSlotsTab1 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeTab1' in 'field list'
In mysql_stmt_prepare() id: 159, sql: "UPDATE guild_member SET BankResetTimeTab2 = ?, BankRemSlotsTab2 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeTab2' in 'field list'
In mysql_stmt_prepare() id: 160, sql: "UPDATE guild_member SET BankResetTimeTab3 = ?, BankRemSlotsTab3 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeTab3' in 'field list'
In mysql_stmt_prepare() id: 161, sql: "UPDATE guild_member SET BankResetTimeTab4 = ?, BankRemSlotsTab4 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeTab4' in 'field list'
In mysql_stmt_prepare() id: 162, sql: "UPDATE guild_member SET BankResetTimeTab5 = ?, BankRemSlotsTab5 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankResetTimeTab5' in 'field list'
In mysql_stmt_prepare() id: 163, sql: "UPDATE guild_member SET BankRemSlotsTab0 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemSlotsTab0' in 'field list'
In mysql_stmt_prepare() id: 164, sql: "UPDATE guild_member SET BankRemSlotsTab1 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemSlotsTab1' in 'field list'
In mysql_stmt_prepare() id: 165, sql: "UPDATE guild_member SET BankRemSlotsTab2 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemSlotsTab2' in 'field list'
In mysql_stmt_prepare() id: 166, sql: "UPDATE guild_member SET BankRemSlotsTab3 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemSlotsTab3' in 'field list'
In mysql_stmt_prepare() id: 167, sql: "UPDATE guild_member SET BankRemSlotsTab4 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemSlotsTab4' in 'field list'
In mysql_stmt_prepare() id: 168, sql: "UPDATE guild_member SET BankRemSlotsTab5 = ? WHERE guildid = ? AND guid = ?"
Unknown column 'BankRemSlotsTab5' in 'field list'
In mysql_stmt_prepare() id: 169, sql: "UPDATE guild_member SET BankResetTimeTab0 = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeTab0' in 'field list'
In mysql_stmt_prepare() id: 170, sql: "UPDATE guild_member SET BankResetTimeTab1 = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeTab1' in 'field list'
In mysql_stmt_prepare() id: 171, sql: "UPDATE guild_member SET BankResetTimeTab2 = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeTab2' in 'field list'
In mysql_stmt_prepare() id: 172, sql: "UPDATE guild_member SET BankResetTimeTab3 = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeTab3' in 'field list'
In mysql_stmt_prepare() id: 173, sql: "UPDATE guild_member SET BankResetTimeTab4 = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeTab4' in 'field list'
In mysql_stmt_prepare() id: 174, sql: "UPDATE guild_member SET BankResetTimeTab5 = 0 WHERE guildid = ? AND rank = ?"
Unknown column 'BankResetTimeTab5' in 'field list'

Shyro

#9
Ez egyrészt azt jelenti, hogy valószínüleg tévedtem. Elég csúnyát. Másrészt meg azt jelenti, hogy indulunk 0 - ról, tehát utána kell nézem, hogy "akkor most hogy is van ez".

UPDATE
IdézNote: If you are installing a new DB you only need the full sql (TDB_full_335.51_2013_02_14.sql)
Csak a FULL TDB kell. (Ne ilyesztegess :D)
makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

Csak az van, és mégis hibát ír, akkor ez hogy is van? :/

Shyro

Az, hogy az elején feltételeztem, hogy a legutolsó verziójú core - od van. Ha a legfrisebb core - od és a legfrisebb DB - d van, akkor elméletileg stimmelnie kellene.
makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

Szabad kérdeznem, hogy van-e egy lefordított core-d? (legújabb WOTLK core). Mert nekem "NevemSenki" adta oda az övét, gondolom neki a legújabb van.

Shyro

Nincs lefordított core - m, nem is szeretém, hogy legyen. Így, már érthető a történet, kénytelen leszel vagy kideríteni, hogy melyik DB verzió passzol a saját core - odhoz, avagy lefordítani a legújabb verziójút.
makeSystem :: Integral a => [a] -> [a]
makeSystem l = concat (zipWith (\ a b -> replicate (fromIntegral a) (fromIntegral b)) l [ product x | x <- inits l ])
makeSystem [ 60, 60, 24, 7, 52 ] = ?

nagyattila

Rendben, köszi szépen mindent, és bocsi hogy raboltam az időd, akkor megyek és mindent kiderítek.

Powered by EzPortal