Jump to content

Web interface - problem with deleting recording


jirim100

Recommended Posts

I can reproduce the issue with your database file. However, under debugger control I can see nothing that is wrong in the DMS. Everything works as expected. Finally the DMS sends a command to the database engine:

 

UPDATE recordings SET enabled=0, found=0 WHERE Filename = 'W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts' COLLATE SYSTEMNOCASE

 

The purpose is to reset two flags to 0, which marks the recording as "removed" in the database (the database entry persists). But the database engine (in sqlite3.dll) doesn't execute this command, so the flags remain unchanged (= 1). SQLite behaves as if the filename is not present, though the DB Browser for SQLite shows that it is. Another test revealed, that

 

SELECT idRecord FROM recordings WHERE Filename = 'W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts' COLLATE SYSTEMNOCASE

 

doesn't work either. The database engine can't find the filename when searching for it specifically.

 

Since the search for a filename is performed by using an index, I guess the index in your database file is broken somehow, but without causing a serious (exception) error. After renaming one of my test recordings to "Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts" and performing an update of my database, the DMS deleted the recording and changed the database entry without problems.

 

Link to comment

Most recordings don't have .ts file on the disk and they can be deleted without any problem (as you can try/see with this .db3 database). 

I didn't with the database of recordings nothing illegal.

 

After recording of .ts file is finished on some of them (and on this affected recording too) I do the following:

- 1. Wait until .ts file is not locked by another process (but max. to 2 minutes - after file is still locked I do nothing)

Spoiler
    // This function is called every 100 miliseconds.
    public static bool IsFileReady(String sFilename)
    {
      // If the file can be opened for exclusive access it means that the file
      // is no longer locked by another process.
      try
      {
        using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
        {
          if (inputStream.Length > 0)
          {
            return true;
          }
          else
          {
            return false;
          }

        }
      }
      catch (Exception e)
      {
        return false;
      }
    }

 

- 2. Obtain recording id from database by the api:

string request = "http://localhost:8089/api/sql.html?rec=1&query=SELECT idRecord FROM recordings WHERE Filename = \"" + System.Web.HttpUtility.UrlEncode(file, Encoding.UTF8) + "\"";

- 3. When is obtaining of the recording id success then I delete recording (no file) in database:

string request = "http://localhost:8089/api/recdelete.html?recid=" + recording_id + "&delfile=0";

- 4. Some of the recorded .ts files I then rename or even delete. But with this affected recording - no rename and deleted the next day.

 

I don't know what DMS do after recording is finished. Maybe the sql command in point 3 "interfere" with some sql command performed by the DMS? Maybe precedes some command performed by the DMS

 

 

 

1 hour ago, Griga said:

I guess the index in your database file is broken somehow

Or maybe is problem with generating the index for the database? About this time start two recordings with similar names:

27.11.21 16:27:00.872 W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts Discontinuities: 0  -  Total size: 1,74 GB  -  Device: Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 16:27:02.056 W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27.ts Discontinuities: 0  -  Total size: 1,90 GB  -  Device: Professional DVB Digital TV DVB-T2 (15

Both recordings start about the same time:

Spoiler
27.11.21 15:28:01.549 TBDADVBSky           OpenDevice       bvDVBSky
27.11.21 15:28:01.549 TRecording           AllocateHardware Professional DVB Digital TV DVB-T2 (15)
27.11.21 15:28:01.549 TRecording           StartRecording   Professional DVB Digital TV DVB-T2 (15)
27.11.21 15:28:01.549 TBDADVBSky           SetTuner         TType: 2, Freq: 498000, Symrate: 0, LOF: 0, Tone: 0, Pol: 2, DiseqC: 0, FEC: 0, APID: 452, VPID: 451, PMT: 450, SID: 14005, TID: 1004, NID: 8395, SatMod: 0, DiseqCVal: 0, Flags: 24, Group: 0
27.11.21 15:28:02.058 TRecording           StartRecording:  CT 3 HD
27.11.21 15:28:02.059 SendUpdate           DVBVUPDATE TMR
27.11.21 15:28:02.166 SendUpdate           DVBVUPDATE REC
27.11.21 15:28:02.166 SendUpdate           DVBVUPDATE RST 10274
27.11.21 15:28:02.560 TBDADigitalDevices   OpenDevice       bvDigitalDevices
27.11.21 15:28:02.560 TRecording           AllocateHardware Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 15:28:02.560 TRecording           StartRecording   Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 15:28:02.560 TBDADigitalDevices   SetTuner         TType: 2, Freq: 514000, Symrate: 0, LOF: 0, Tone: 0, Pol: 2, DiseqC: 0, FEC: 0, APID: 2620, VPID: 2610, PMT: 2600, SID: 278, TID: 8465, NID: 8395, SatMod: 0, DiseqCVal: 0, Flags: 24, Group: 6
27.11.21 15:28:02.560 TRecording           StartRecording:  CT 3 HD T2
27.11.21 15:28:02.561 SendUpdate           DVBVUPDATE TMR
27.11.21 15:28:03.845 SendUpdate           DVBVUPDATE REC
27.11.21 15:28:03.845 SendUpdate           DVBVUPDATE RST 10453
27.11.21 16:27:00.873 TRecording ($02841690)    W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts Discontinuities: 0  -  Total size: 1,74 GB  -  Device: Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 16:27:00.873 SendUpdate           DVBVUPDATE REC
27.11.21 16:27:00.878 TRecording           Release          Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 16:27:00.878 TRecording           Free             Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 16:27:00.883 TRecording           Freed            Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 16:27:00.883 TRecording           hamDeleted       Digital Devices DVB-T2 Tuner 1 (9)
27.11.21 16:27:00.883 SendUpdate           DVBVUPDATE TMR
27.11.21 16:27:00.887 SendUpdate           DVBVUPDATE RST -10453
27.11.21 16:27:02.056 TRecording ($0283F110)    W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27.ts Discontinuities: 0  -  Total size: 1,90 GB  -  Device: Professional DVB Digital TV DVB-T2 (15)
27.11.21 16:27:02.057 SendUpdate           DVBVUPDATE REC
27.11.21 16:27:02.058 TRecording           Release          Professional DVB Digital TV DVB-T2 (15)
27.11.21 16:27:02.058 TRecording           Free             Professional DVB Digital TV DVB-T2 (15)
27.11.21 16:27:02.118 TRecording           Freed            Professional DVB Digital TV DVB-T2 (15)
27.11.21 16:27:02.118 TRecording           hamDeleted       Professional DVB Digital TV DVB-T2 (15)
27.11.21 16:27:02.118 TProcessTimer        Process Params   40 45 0 0 0 "W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27.ts" 2076 1176 -55 -55
27.11.21 16:27:02.118 TWinApp              Execute          C:\Users\troji\Documents\Visual Studio Projects\MyPDC_2017\x64\Release\MyPDC_2015.exe
27.11.21 16:27:02.118 TWinApp              Working Directory C:\Users\troji\Documents\Visual Studio Projects\MyPDC_2017\x64\Release\
27.11.21 16:27:02.141 TProcessTimer        StartRecord      VPS_PDC started
27.11.21 16:27:02.142 SendUpdate           DVBVUPDATE TMR
27.11.21 16:27:02.145 SendUpdate           DVBVUPDATE RST -10274
27.11.21 16:27:55.180 TProcessTimer        NeedsEnding      VPS_PDC finished
27.11.21 16:27:55.180 ReleaseStandbyblock  TVCR
27.11.21 16:27:55.180 TServiceMain         ReleaseReference TVCR: 0
27.11.21 16:27:55.182 SetStandbyBlock      EvaluateShutdown
27.11.21 16:27:55.183 SendUpdate           DVBVUPDATE PWR DESKTOP-B7NHU71
27.11.21 16:28:04.190 ReleaseStandbyblock  DoShutDown

 

 

But in the web interface, for one is showed duration 00:29 and on the second duration 00:59:

image.png.dbf9dc4ccc8ebc1f6976a4827132b6c8.png

Edited by jirim100
Link to comment
vor 19 Stunden schrieb jirim100:

then I delete recording (no file) in database:

 

It doesn't delete the database entry, but resets the "enabled" and "found" flags, thus moving the recording to the "Removed" section, except if "enabled" is already 0 or if the request includes the deldbentry=1 parameter or if the recording is not yet finished.

 

vor 19 Stunden schrieb jirim100:

I don't know what DMS do after recording is finished.

 

Usually the database entry is created when the recoding starts. However, if at this point in time no EPG data is available for the recorded programme, the DMS creates a DB entry with default data and updates it after the recording has been stopped, particularly if EPG data has arrived in the meantime. In any case it updates the "last write times" of the recording and the EPG info file in the database entry, so that subsequent changes of the files can be recognized.

 

vor 19 Stunden schrieb jirim100:

Maybe the sql command in point 3 "interfere" with some sql command performed by the DMS?

 

This can't happen, because the function calls are serialised and executed in a single thread. While the recording gets stopped, no other call can kick in and do something. However, database updates (that include reading from and writing to the DB) are running in a separate background thread and are using a separate connection to the DB, so they can be executed simultaneously with recording and other tasks. The database engine is able to handle this. If you want more information about this topic, search the web for sqlite thread safe.

 

vor 19 Stunden schrieb jirim100:

But in the web interface, for one is showed duration 00:29 and on the second duration 00:59

 

In your uploaded database file the duration values are 00:29 and 00:30. However, they may change, because the web interface uses the actual duration of the file if it is already known, otherwise the duration from the EPG. Determining the actual duration is quite expensive, because the DMS must open the file and read parts, search for time stamps at the beginning and end etc. That's why the DMS does it only if required, e.g. when a file is played in the web interface. At this opportunity the DMS also retrieves other parameters besides the duration, e.g. the video resolution and aspect ratio and saves them in the "video" table of the recording database. The "recordings" table focuses on EPG data.

 

Link to comment
vor 21 Stunden schrieb Griga:

I guess the index in your database file is broken somehow

 

It can be verified in the SQLite browser (without DMS being involved), that allows to enter database queries. With

 

SELECT idRecord FROM recordings WHERE filename = 'W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts'

 

I get no result either, unless I delete the index "idxFileName". The following line works in any case

 

SELECT idRecord FROM recordings WHERE INSTR(filename, 'W:\For The Record\Písničky z Lucerny; hudební pořad; ČSR; 1987; vysíláno 2021-11-27 T2.ts') > 0

 

because INSTR doesn't use an index (see here).

 

After stopping the DMS, deleting the index idxFileName in the SQLite browser, saving the changed database and starting the DMS it is possible to delete the entry in question in the web interface.

 

Link to comment

Then how is conclusion? The fault is in SQLite?

Do you change sql command "select record ..." inside DMS with INSTR function? Why this sql select with INSTR working? Why is not the "filename" inside the database exactly equal with the searched file name? Ending the "filename" inside the database with the null characters? What "filename" was written to the database instead of the "Písničky z lucerny..."? 

 

I can't stop DMS, delete some index, save changes, start DMS. Firstly, most of time I am still recording, and secondly - I want DMS working without this "expensive work" which I have to do myself - this is not my work (I have another work which I have to do).

 

In .db3 file which I send you is another record with the same problem:

image.png.b5cedb3c92378110697e9d23381a1570.png

 

 

 

Edited by jirim100
Link to comment
vor 2 Stunden schrieb jirim100:

The fault is in SQLite?

 

Who knows? I don't.

 

vor 2 Stunden schrieb jirim100:

Do you change sql command "select record ..." inside DMS with INSTR function?

 

No. This function is much slower (at least in theory), because it can't use an index due to its nature.

 

vor 2 Stunden schrieb jirim100:

Why is not the "filename" inside the database exactly equal with the searched file name?

 

It is exactly equal. Otherwise it wouldn't work without index. Removing it forces the database engine to perform a search with mere string comparison. Please read more about it here.

 

After deleting the index, which made deleting the database entry work in the web interface, I've let SQLite browser create a new idxFileName index and was quite sure, that it would work. But it didn't. The problem occured again with the new index.

 

Link to comment

In the meantime I've learned something:

 

https://www.sqlite.org/pragma.html#pragma_integrity_check

 

Please try the following DMS API request in your browser (and also anybody else who wants to check his recording database and contribute feedback):

 

http://localhost:8089/api/sql.html?rec=1&query=PRAGMA integrity_check(10000)

 

This performs an integrity check on the recording database. The parameter 10000 specifies the maximum number of problems that shall be reported. It is not sufficient for displaying all problems that are detected in your database, but enough to find (by using the browser search function) that besides other indexes idxFilename is also affected.

 

No problems are reported for my recording database. However, I'm no power user like you. There are far less entries in my database. Most of them are only test recordings, and the DB gets recreated completely from time to time..

 

Unfortunately the report doesn't reveal why this index corruption has happened. One possibility is mentioned here in the first reply to the post. "Custom Collation" refers to a string compare function provided by the application for the database engine - in this case by the DMS, because SQLite is not able to compare UTF-8 strings itself. We had a discussion about it here in 2019, resulting in a change of the collate function. Since it yields different results for Czech language than the previous function (due to the desired new sort order), it may have affected indexes from this point on, because the already present index entries were based on a different function. However, that's just an assumption, nothing that I know for sure.

 

Link to comment

Very interesting.

 

I did this check and here is ONLY part of this result:

Spoiler
<table>
<row>
<INTEGRITY_CHECK>row 2 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 3 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 5 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 7 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 9 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 10 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 12 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 13 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 15 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 20 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 21 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 28 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 29 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 32 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 35 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 39 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 48 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 56 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 60 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 62 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 63 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 64 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 65 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 66 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 67 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 68 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 69 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 70 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 73 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 74 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 77 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 83 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 95 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 101 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 102 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 106 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 111 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 112 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 115 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 116 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 119 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 129 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 132 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 134 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 136 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 137 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 138 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 143 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 146 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 148 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 149 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 151 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 154 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 155 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 157 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 158 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 163 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 167 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 175 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 177 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 180 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 185 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 186 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 191 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 198 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 204 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 209 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 211 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 212 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 214 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 215 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 218 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 219 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 221 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 223 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 226 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 228 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 240 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 243 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 246 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 248 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 252 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 265 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 267 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 270 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 271 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 273 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 275 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 276 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 279 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 280 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 282 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 287 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 290 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 294 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 306 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 307 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 323 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 327 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 338 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 339 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 347 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 354 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 359 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 361 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 362 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 363 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 366 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 369 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 377 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 378 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 379 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 388 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 392 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 412 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 436 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 441 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 452 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 460 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 463 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 465 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 497 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 531 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 534 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 535 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 544 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 549 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 554 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 555 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 556 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 564 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 571 missing from index Video_Index01</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 582 missing from index Video_Index01</INTEGRITY_CHECK>
</row>

 

 

Complete result you can download from here https://www.transfernow.net/dl/20211204QqorqNyj/kgXbrJAM

 

Here is another part of this result:

Spoiler
<row>
<INTEGRITY_CHECK>row 664 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 666 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 670 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 672 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 679 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 681 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 683 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 685 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 685 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 690 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 691 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 699 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 702 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 707 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 708 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 717 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 724 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 725 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 728 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 733 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 736 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 736 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 743 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 746 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 748 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 755 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 755 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 758 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 759 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 761 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 762 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 763 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 767 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 769 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 770 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 778 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 779 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 784 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 785 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 789 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 796 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 798 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 802 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 806 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 811 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 812 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 824 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 826 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 831 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 834 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 837 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 839 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 846 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 858 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 859 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 860 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 864 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 865 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 870 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 872 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 876 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 877 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 879 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 880 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 883 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 892 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 893 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 898 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 899 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 901 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 902 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 903 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 908 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 909 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 913 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 916 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 917 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 918 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 920 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 924 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 928 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 934 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 935 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 937 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 942 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 943 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 951 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 951 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 952 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 953 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 956 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 957 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 958 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 962 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 966 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 968 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 968 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 970 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 971 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 971 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 972 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 974 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 974 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 981 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 982 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 983 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 984 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 987 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 991 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 993 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 994 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 996 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 998 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1003 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1008 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1017 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1023 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1027 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1030 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1032 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1033 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1036 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1040 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1043 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1045 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1047 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1048 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1050 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1054 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1057 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1063 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1071 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1075 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1079 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1080 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1081 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1085 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1087 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1090 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1095 missing from index idxTitle</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 1096 missing from index idxTitle</INTEGRITY_CHECK>
</row>

 

 

And here:

Spoiler
<row>
<INTEGRITY_CHECK>row 8820 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8822 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8825 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8827 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8828 missing from index idxchannel</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8829 missing from index idxchannel</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8829 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8831 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8834 missing from index idxFileName</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8835 missing from index idxchannel</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 8837 missing from index idxchannel</INTEGRITY_CHECK>
</row>

 

 

I am using DMS (and previously RS) many years and I never deleted database file.

Edited by jirim100
Link to comment

After having found out what is wrong, the next step is to think about a repair function.

 

The easiest way to fix the whole thing is most likely to stop the DMS, remove SvcDatabase.db3 (but keep it as backup), start DMS and perform a recording database update. This should work, provided that all recordings are located in recording directories and there are EPG info files for all of them. However, all recordings in the "Removed" section will get lost.

 

Another possibility would be to provide a tool or DMS function (available as API call) that reads the complete database content to memory, deletes everything in the DB and then writes the memory content back, hoping that this will create new consistent indexes. However, first I need to find out if and how this can be done.

 

Link to comment

This sounds good.

 

>remove SvcDatabase.db3 (but keep it as backup)<  - rename the database to filename "SvcDatabase.bak" in the same directory ? Then start DMS and then in web interface perform "Update recording database" and after it all entries (except Removed entries) from old database will be written to new .db3 file?

-------------------

I created backup of all .db3 files in Database folder, leave SvcDatabse.db3 in Database folder, then I perform "Update recording database", but after it only last 18 recording are in the database (plus many recordings in the "Removed" section), but file SvcDatabase.db3 has still 33 MB.

 

Edited by jirim100
Link to comment

Result of integrity check (with 13 existing and 2863 deleted recordings kept for duplicate detection):

 

ADDENTUM: My db exists since old RS times, ~2009 i think. Was never deleted/recreated if i remember correctly.

Spoiler
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<table>
<row>
<INTEGRITY_CHECK>row 15 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 79 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 168 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 199 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 217 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 321 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 459 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 475 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 547 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 565 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 654 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 655 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 744 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 753 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 903 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 956 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 963 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 965 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 984 missing from index idxInfo</INTEGRITY_CHECK>
</row>
<row>
<INTEGRITY_CHECK>row 989 missing from index idxInfo</INTEGRITY_CHECK>
</row>
</table>

 

Link to comment
vor 2 Stunden schrieb jirim100:

after it all entries (except Removed entries) from old database will be written to new .db3 file?

 

Not from the old database, but from your EPG info files (.txt). They are a kind of database backup. Every media file with a correspondent EPG info file can be added to the recording database again, even MKV or MP4 or whatever files. If there is no recording database entry and no EPG info file for a recording, it isn't a recording anymore for the DMS, but only some video file with unknown source.

 

vor 34 Minuten schrieb HaraldL:

row 15 missing from index idxInfo

 

This only refers to the old recording history database that isn't used anymore since version 2.0.4.1 except if the "Consider recording history on auto-timer creation" tweak is switched on for compatibility reasons.

 

Zitat

The Recording History database table is not updated and (by default) not used for auto-timer creation anymore. The Media Server now uses the main database table for it, where removed recordings persist (and already persisted in the past) as “disabled” entries until they are deleted manually in the Desktop Web Interface (see below) or by a database cleanup.

 

Link to comment
3 hours ago, Griga said:

Not from the old database, but from your EPG info files (.txt).

Oh, but I don't have these files and in the past I even didn't create these files.

 

6 hours ago, Griga said:

Another possibility would be to provide a tool or DMS function (available as API call) that reads the complete database content to memory, deletes everything in the DB and then writes the memory content back, hoping that this will create new consistent indexes. However, first I need to find out if and how this can be done

I will wait for it if you create this possibility. It would be perfect! I don't want to lost recording history. Never.

Edited by jirim100
Link to comment
vor 2 Stunden schrieb jirim100:

but I don't have these files and in the past I even didn't create these files.

 

That's quite risky. Under unfavourable circumstances your recording database may get so corrupted that it can't be read anymore, which means, it can't be recreated or repaired, and your whole recording collection is gone. The video files are still there, but they are no recordings anymore. Some users already experienced that.

 

You should at least periodically create a backup of your SvcDatabase.db3 without overwriting previous backups, because you may notice too late that the DB has become unusable.

 

vor 2 Stunden schrieb jirim100:

I will wait for it if you create this possibility.

 

I just managed to create an error free version of your SvcDatabase.db3 with some additional DMS code. After that, deleting the "Písničky z Lucerny" item worked without problems. However, this implementation is not really usable in practice, because it may interfere in an unhealthy way with other database connections/activities in the DMS. Furthermore it takes quite some time to repair your huge DB, even with an I7 CPU, and lets the DMS freeze while the procedure is going on. I think it's better to create a console app that does the job while the DMS is stopped.

 

Link to comment
On 12/4/2021 at 8:25 PM, Griga said:

However, this implementation is not really usable in practice, because it may interfere in an unhealthy way with other database connections/activities in the DMS.

I will do it when no recording is active. But I don't know what all activities DMS do.

 

On 12/4/2021 at 8:25 PM, Griga said:

I think it's better to create a console app that does the job while the DMS is stopped.

Maybe it will be the best solution of all.

Link to comment

 

vor 7 Stunden schrieb Delphi:

Here is mine:

 

Also quite a lot of errors ;), but none concerning the idxFilename index, which is the most important one for finding a particular recording in the database.

 

Below the first version of RepairSvcDatabase.exe attached. Is is a console app, which means, it outputs information and results to a console window. Store RepairSvcDatabase.exe in the DVBViewer program directory (where DVBViewer.exe is). To be on the safe side, create a backup of SvcDatabase.db3 before using RepairSvcDatabase.exe! Don't use RepairSvcDatabase.exe just for fun! You must know what you do if you use it!  Before launching it, the DVBViewer Media Server must be stopped!

 

After being launched, the tool does the following:

  • Check if the DVBViewer Media Server is running and exit immerdiately, if yes. Otherwise:
  • Check if SvcDatabase.db3 is present in the Database sub-directory of the configuration folder.
  • Open the file and create a database object for it.
  • Check the database  integrity (see here) and exit immediately, if there are no errors. Otherwise:
  • Read the content of all database tables to memory.
  • Close the database file and free the database object.
  • Delete an old SvcDatabase.bak, if present.
  • Rename SvcDatabase.db3 to SvcDatabase.bak.
  • Create a new SvcDatabase.db3 and a database object for it
  • Create all required tables and indexes for the new database.
  • Restore the content of all previously read database tables from memory to the new database.
  • Close the database file and free the database object.

If launched a second time, RepairSvcDatabase.exe should report no errors anymore and exit immediately.

 

@jirim100In the console output the tool will report 5 errors thrown by the database engine while restoring your recordings table. They are caused by duplicate recording paths\filenames that violate the UNIQUE constraint of the table index. Each path\filename in idxFilename must only appear once. The 5 duplicate entries are discarded. Everything else is processed as intended, as far as I can see.

 

 

RepairSvcDatabase.zip

Link to comment

Great. Very thanks!  

 

I already run it and all looks good. Now I can delete these recordings.

 

Here is output from the second round:

Check if SvcDatabase.db3 is present
Create database object for C:\ProgramData\CMUV\DVBViewer\DataBase\SvcDatabase.db3
Create database tables and indexes
Check database integrity
0 errors found
Done. Press Return

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...