User Tools

Site Tools


how_to:repairing_corrupted_database

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
how_to:repairing_corrupted_database [2020/12/02 08:38] paulhow_to:repairing_corrupted_database [2024/01/15 11:35] (current) paul
Line 9: Line 9:
 If that is not possible, then in some cases, you may be able to remove the damaged parts of the database and recover from there while keeping most of the important data intact. This article explains some possible ways to do this. Note that none of these methods are guaranteed, and are done at your own risk. If that is not possible, then in some cases, you may be able to remove the damaged parts of the database and recover from there while keeping most of the important data intact. This article explains some possible ways to do this. Note that none of these methods are guaranteed, and are done at your own risk.
  
-We can help you with these under our chargeable service which costs £30/hr (or part of) for this type of problem, but there are no guarantees we will be able to recover anything.+We can help you with these under our chargeable service which costs £40/hr (or part of) for this type of problem, but there are no guarantees we will be able to recover anything.
  
 Before you start you should: Before you start you should:
Line 65: Line 65:
     badid INT;     badid INT;
 begin begin
 +DROP TABLE IF EXISTS badids;
 +CREATE TEMP TABLE badids (msgdataid BIGINT);
 FOR badid IN SELECT msgdataid FROM messages.msgdata ORDER BY msgdataid LOOP FOR badid IN SELECT msgdataid FROM messages.msgdata ORDER BY msgdataid LOOP
     curid = curid + 1;     curid = curid + 1;
Line 77: Line 79:
     exception     exception
         when others then         when others then
 +            INSERT INTO badids (msgdataid) VALUES(badid);
             raise notice 'data for message % is corrupt', badid;             raise notice 'data for message % is corrupt', badid;
             continue;             continue;
Line 86: Line 89:
  
 This will read all the messages from the database, and tell you which message(s) it encountered an error with This will read all the messages from the database, and tell you which message(s) it encountered an error with
 +
 +However, sometimes it won't find all problem messages, so it is a good idea to run it again after fixing any problems, until this script doesn't find any more errors. 
 +
 +This script stores the bad message IDs in a temporary table called 'badids', so you can look at the values using 'SELECT * FROM badids;' or use the table to help with other functions if it helps (and you know SQL)
  
 ===Getting message summary info=== ===Getting message summary info===
how_to/repairing_corrupted_database.txt · Last modified: 2024/01/15 11:35 by paul