PDA

View Full Version : Lost All Characters


kofac
03-04-2010, 04:28 PM
Can someone please help me...

I have been running a home EQ Server for over a year now with out to many problems.

But today when I log in there are no characters on any of my accounts on the login screen. I can see there in the character_ database but they dont show at login.

I get this error if anyone can please help at all I would be grateful.

Got a bogus character (Aramid) Ignoring!!!
PP length =19569 but PP should be 19568
Got a bogus character (Kofac) Ignoring!!!
PP length =19570 but PP should be 19568
Got a bogus character (Ricin) Ignoring!!!
PP length =19569 but PP should be 19568

Derision
03-04-2010, 05:15 PM
Did you change anything ? Anything at all ?

I've never heard of PPs becoming corrupt like that, other than bad source code changes, or manually editing the character_ table in the DB, but that normally ends up with a zero length PP, not one that is one or two bytes out.

Assuming you have no backup of your database, back it up now:


mysqldump -u root -p <yourdbname> > mybackup.sql


Now, there is a chance you may be able to recover, if your have good entries in your character_backup table.

Execute this query:


select id, name, length(profile) from character_backup;


If you have entries with a length(profile) of 19568, then they are not corrupt, e.g.


mysql> select id, name, length(profile), ts from character_backup where name like 'Derision';
+------+----------+-----------------+---------------------+
| id | name | length(profile) | ts |
+------+----------+-----------------+---------------------+
| 209 | Derision | 19568 | 2008-05-23 20:59:46 |
| 210 | Derision | 19568 | 2008-05-23 21:05:06 |
| 227 | Derision | 19568 | 2008-05-29 18:37:47 |
| 226 | Derision | 19568 | 2008-05-29 18:32:46 |
| 334 | Derision | 19568 | 2008-06-29 16:41:51 |
| 335 | Derision | 19568 | 2008-06-29 18:32:23 |
| 4223 | Derision | 19568 | 2010-02-03 21:26:36 |
| 4221 | Derision | 19568 | 2010-02-03 20:18:43 |
+------+----------+-----------------+---------------------+
8 rows in set (0.00 sec)


Login and create a new GM character. Once in game, for each corrupted character, issue the command:

#charbackup restore <CharName> <Backup ID>


Where <Backup ID> is the latest ID number from the query I listed above, where the length(profile) is the correct size of 19568.

I have never used the #charbackup restore command before, but I just deliberately NULLed out the profile of a character and tried to restore it in this manner, and it seemed to work, however whatever caused you character_ entries to become corrupted, may well have also corrupted the character_backup table as well, in which case you are out of luck if you have no database backup prior to the problem occurring.

kofac
03-04-2010, 06:44 PM
Thank you VERY much for your help Derision. That worked perfectly luckily my character_backup table was intact. I ended up restoring about 20 characters with it :)

As for how it happened. I am not sure. I do keep backups but perhaps I need to re-look at how I do that. I do my backups with a programme called Auto Backup For MySQL. Which normally seems to work. As it allows me to back up daily automatically.

I did try to restore the Character_ table from an older backup. But it was still corrupt.

More than probably my fault. I must have messed something up today. When backing up.

Once again thank you very much for the fast response and for the solution it worked flawless. :)

One thing this has gotten my attention now. I need to look at a better way to backup the data.

Krran
12-18-2012, 01:22 AM
Also, I found that this happened to me because the blob slot was losing data when I was backing up my data. This was fixed by saving blobs as HEX, as in:

prompt> mysqldump -uuser -ppassword -R --hex-blob=TRUE peq > backup.sql

hope this helps someone so they don't blow a day on it like I did