пропавшие фильмы в видеобазе (1 Viewer)

DearSandy

Portal Member
February 26, 2009
36
4
Собственно не вопрос а решение.
Если модераторы сочтут , что тема не уместна - смирюсь :)
Выложил, потому как сам изрядно поломал голову над этим и может кто то не наступит на те же грабли.
Проблема проявилась в следующем: при добавлении фильма в каталог ("Video Database") запись (не сами файлы!) о нем пропадала.
Изучение структуры базы данных каталога (VideoDatabaseV5.db3) выявило что сие непотребство происходит при отсутствии записи о режиссере в таблице actors, ссылка на которую есть в таблице movieinfo. В моем случае это происходило от того, что я не сообразил что и актеры и режиссеры хранятся в одной таблице, а я удалял иногда появлявшихся актеров "unknown" (а в данном случае это были режиссеры). Как выяснилось это недопустимо в логике программы и после удаления фильм просто не появлялся в списке.
Само собой, в свете выявления причины, теперь можно просто заново создать запись о фильме.
Но если по каким то причинам нужно вернуть работоспособность уже существующей записи, то сделать это можно при помощи редактора баз данных. Я использовал SQLiteStudio. Выявить поврежденные таким образом записи можно с помощью SQL запроса вида:

SELECT idMovie,
      idDirector,
      strPlot,
      iYear,
      strTitle
  FROM movieinfo
      LEFT JOIN actors
              ON movieinfo.idDirector = actors.idActor
WHERE ( actors.idActor IS NULL );

По полученным в результате idDirector следует добавить соответствующую запись в таблицу actors. К примеру, пустышку вида (idDirector; unknown). Если запрос показывает несколько подобных случаев (несколько разных значений idDirector), то можно там же (в результатах запроса) поменять idDirector на созданную перед этим пустышку (ну или же реальную запись об актере/режиссере).
Настоятельно рекомендую делать копию файла базы VideoDatabaseV5.db3 перед подобными манипуляциями!!!
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Top Bottom