EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Windows Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=587)
-   -   MySQL Error showing up on GM screen (https://www.eqemulator.org/forums/showthread.php?t=39284)

Riklin 01-29-2015 02:00 AM

MySQL Error showing up on GM screen
 
So it's been about 3 weeks since I last sourced and recompiled. Everything compiled normally. Bots needed to be reloaded, but I am now getting an error I haven't seen before. This error shows up in the chat window of the GM character. The error is in RED text and is as follows:

[MySQL Error] 1054: Unknown column 'c.timelaston' in 'field list' SELECT
c.id,c.name,c.class,c.level,c.timelaston,c.zoneid,
g.guild_id,g.rank,g.tribute_enable,g.total_tribute ,g.last_tribute,g.banker,g.public_note,g.alt
FROM vwBotCharacterMobs AS c LEFT JOIN vwGuildMembers as g ON c.id=g.char_id
AND c.mobtype = b.mobtype WHERE g.guild_id=1

This only shows up on the GM account, not on any others. I checked the views and they appear to be normal. This same error showed up on the world.exe screen the first time I started the server. I did the patching thing and it doesn't show up when starting the server. It only shows up on the GM character.

Again, this has never ever showed up before doing the build tonight...

trevius 01-29-2015 11:40 AM

When you update your source, you should read through the changelog.txt file for information on what was changed as well as the occasional special instructions for things you may need to change manually after updating (there were a few recently).

https://github.com/EQEmu/Server/blob.../changelog.txt

In the Changelog, Akkadius provides this link to explain the new logging system in-depth:

http://wiki.eqemulator.org/p?Logging...rhaul&frm=Main

In the case of this particular error, that is one of the few types enabled by default to be sent to GMs in game. It is an important error, which means either your database has a table that is not current (such as a missing field or renamed field), or that the source code has a bad query written in it.

Generally, the query issues in the source are fixed quickly because they have lots of exposure. There is one that needs to be fixed for raid_leaders (that I actually have fixed for the next push I do). In the case of your error, that is something related to bots. I don't compile with bots, so I don't really know the details of that error. Most likely, one of the EQEmu devs will need to fix something with the bot queries to stop that error from coming in.

Bots use views as if they were normal tables, which really is not ideal for our solution. They should probably be converted over to just use normal tables at some point. Unfortunately, I don't think there are any of the current EQEmu Devs actually use bots, so I am not sure when that would get fixed. Bots really need someone devoted to them that can code, and will make pull requests on Git to fix their issues.

Riklin 01-29-2015 05:31 PM

Excellent explanation. Thank you!

I have wondered where the changelog.txt was, but couldn't find it. I would have reviewed them every time, but didn't know where to find them.

It's nice to know that my explanation was in fact a new "feature" that reveals a bug of some kind and not a but itself... That had me somewhat concerned. I'll see if I can fix it tonight by investigating the views and possibly taking a look at the header files involving those bot changes. My full time job is as a developer for a "significant northwest aerospace corporation", so this is something I do all the time anyway...

Riklin (Halls Havoc)

demonstar55 01-29-2015 05:41 PM

The changelog.txt is in the root folder of the repo, if you are building it yourself, you should see it ...

Riklin 01-29-2015 09:00 PM

Thanks for that info about changelog. I found it and will diligently use it for now on!.

In trying to figure out the error itself...

SELECT
c.id,c.name,c.class,c.level,c.timelaston,c.zoneid,
g.guild_id,g.rank,g.tribute_enable,g.total_tribute ,g.last_tribute,g.banker,g.public_note,g.alt
FROM vwBotCharacterMobs AS c LEFT JOIN vwGuildMembers as g ON c.id=g.char_id
AND c.mobtype = b.mobtype WHERE g.guild_id=1

This is looking for c.timelaston. There indeed is no column in vwBOTCharacterMobs called "timelaston". There is a column called "last_login" which appears to be the same thing.

I have a version of the database which is empty, created from the 9/25/2014 peq database. It has been appropriately patched. That version also has this error and the bot views appear to be set up identically. I suspect this is a code issue somewhere. I'll continue to look at it. Maybe I'll get lucky and stumble on the code somewhere... LOL!

Riklin

Riklin 01-29-2015 09:06 PM

This query works correctly... I believe this is what the query should be.

SELECT
c.id,c.name,c.class,c.level,c.last_login,c.zone_id ,
g.guild_id,g.rank,g.tribute_enable,g.total_tribute ,g.last_tribute,g.banker,g.public_note,g.alt
FROM vwBotCharacterMobs AS c LEFT JOIN vwGuildMembers as g ON c.id=g.char_id
AND c.mobtype = g.mobtype WHERE g.guild_id=1


Now to figure out where it goes...

Riklin

Riklin 01-29-2015 09:08 PM

This query is a bit more dynamic than I thought. The guild ID value changes, so I suspect this is a resulting query from some sql assembler process.

demonstar55 01-29-2015 09:43 PM

Quote:

Originally Posted by Riklin (Post 237275)
Thanks for that info about changelog. I found it and will diligently use it for now on!.

Make sure you read the commit messages, some of us like to be lazy and piss akka off.

Uleat 01-29-2015 10:19 PM

Oh, I disagree! I diligently try to piss akka off :P

dagulus2 01-30-2015 05:40 AM

Quote:

Originally Posted by Riklin (Post 237275)
This is looking for c.timelaston. There indeed is no column in vwBOTCharacterMobs called "timelaston". There is a column called "last_login" which appears to be the same thing.

I have a version of the database which is empty, created from the 9/25/2014 peq database. It has been appropriately patched. That version also has this error and the bot views appear to be set up identically. I suspect this is a code issue somewhere. I'll continue to look at it. Maybe I'll get lucky and stumble on the code somewhere... LOL!

Riklin

My PEQ Database does have a timelaston column is vwBOTCHaracterMobs, so one of us is not up to date.

Uleat 01-30-2015 07:26 PM

Bots are always out of date... Probably needs to be updated to reflect the pp conversion.

Nibiuno 02-06-2015 08:54 AM

I have the same issue, if I fix it Ill let you know.

edit: Fixed -

You need to edit two tables for bots on the latest RoF2 code.

table botbuffs:
add a column dot_rune after MagicRune as an INT

vwbotcharactermobs:
The view should read this:
select _utf8'C' AS `mobtype`,`c`.`id` AS `id`,`c`.`name` AS `name`,`c`.`class` AS `class`,`c`.`level` AS `level`,`c`.`last_login` AS `timelaston`,`c`.`zone_id` AS `zoneid` from `character_data` `c` union all select _utf8'B' AS `mobtype`,`b`.`BotID` AS `id`,`b`.`Name` AS `name`,`b`.`Class` AS `class`,`b`.`BotLevel` AS `level`,0 AS `timelaston`,0 AS `zoneid` from `bots` `b`

Nightrider84 05-29-2015 02:41 PM

I can confirm that it works now. to save a few minutes of trouble heres the same thing nibiuno posted but made it easier to copy and paste it

You need to edit two tables for bots on the latest RoF2 code.

table botbuffs:
add a column dot_rune after MagicRune as an INT

vwbotcharactermobs:

select _utf8'C'
AS `mobtype`,`c`.`id`
AS `id`,`c`.`name`
AS `name`,`c`.`class`
AS `class`,`c`.`level`
AS `level`,`c`.`last_login`
AS `timelaston`,`c`.`zone_id`
AS `zoneid`
from `character_data` `c`
union all
select _utf8'B'
AS `mobtype`,`b`.`BotID`
AS `id`,`b`.`Name`
AS `name`,`b`.`Class`
AS `class`,`b`.`BotLevel`
AS `level`,0
AS `timelaston`,0
AS `zoneid`
from `bots` `b`

Thanks again nibiuno saved me some time.


All times are GMT -4. The time now is 08:40 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.