[PT4] Uszkodzona baza

  • 17 odpowiedzi
    • dragoste
      dragoste
      Brąz
      na forum od: 07.05.2010 Posty: 4 468
      Witam,

      skoro dostałeś wszystkie swoje rozdania od PokerStars, to może łatwiejszym rozwiązaniem będzie utworzenie nowej bazy i zaimportowanie ponownie tych rozdań.
      Database -> Database Managment -> New.

      Starą usuń dopiero, gdy upewnisz się, że nowa działa prawidłowo.

      Pozdrawiam.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Napisane przez evLeisure
      Zależy mi na odzyskaniu tej bazy danych, a nie na utworzeniu nowej, ponieważ mam w niej zaznaczonych wiele rąk z moimi leakami, nad którymi miałem dopiero popracować.
    • ramadas
      ramadas
      Brąz
      na forum od: 02.09.2011 Posty: 462
      Napisane przez evLeisure
      Napisane przez evLeisure
      Zależy mi na odzyskaniu tej bazy danych, a nie na utworzeniu nowej, ponieważ mam w niej zaznaczonych wiele rąk z moimi leakami, nad którymi miałem dopiero popracować.
      Jakie to musi być wkurzające, że płacisz za PT4 80 dolców i zamiast pomagać, to ci zniszczyło pracę. Ale pewnie HM2 i Elefant też tak ma.
    • emomaniac
      emomaniac
      Brąz
      na forum od: 11.08.2006 Posty: 2 420
      Witam

      Trochę niewyraźny ten screen, ale widać przynajmniej jeden uszkodzony index. Może to być wina dysku.

      Spróbuj tak :

      Start - Uruchom - cmd

      cd C:\Program Files\PostgreSQL\8.4\bin <enter>

      reindexdb -d nazwaTwojejbazy -i thps:idx5_position -U postgres -w <enter>

      Tak to w przybliżeniu wygląda:





      Jak nie pomoże to daj screena jaki jest komunikat.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Screen jest u Ciebie niewyraźny? Dziwne. Jak otwieram go u mnie to wystarczy w niego kliknąć, aby go powiększyć.

      Niestety po próbie reindex'u podaną przez Ciebie metodą wyskakuje ten sam błąd jak podczas reindexu' z poziomu pgAdmin.

    • emomaniac
      emomaniac
      Brąz
      na forum od: 11.08.2006 Posty: 2 420
      Wymyśliłem jeszcze jedno rozwiązanie - backup i przywrócenie z drugiej bazy problematycznej tabeli podczas reindexu której występuje błąd. Gdybyś wrzucił gdzieśplik textowy z całym komunikatem reindexu z poziomu pgadmin to by było widać przy jakiej tabeli wywala błąd i przerywa operację.
      Najlepiej spróbuj jeszcze raz zrobić reindex i sam zobaczysz.

      Potem:
      1. Zrób backup starej bazy (nie zaszkodzi jak się coś spier...)
      2. Zaimportuj te same ręce do nowej
      3. W pgadmin zrób backup problematycznej tabeli z nowej bazy - przyjmijmy, że jest to tabela tourney_hand_player_statistics gdzie wywala błąd "index thps:idx5_position contains unexpected zero page..."
      4. Do starej bazy zrób przywracanie tabeli z tego backupa.



      Opcja 2 jakby to nie zadziałało.
      Dowiedz się na forum PT w jakiej tabeli przechowuje zaznaczone ręce (na tym Ci szczególnie zależy) i w sposób podany wyżej zrób backup - restore tej tabeli ze starej bazy do nowej (zakładam tutaj, że ta tabela w starej bazie nie jest uszkodzona).

      edit:

      Możesz jescze spróbować reindeksowania poszczególnych tabel z poziomu wiersza poleceniem

      reindexdb -d nazwaTwojejbazy -t nazwatabeli -U postgres -w

      lub przez pgadmin (jak na screenie powyżej tylko zamiast backup zrobić porządkowanie- reindex)

      i w ten sposób przeindeksować te tabele, które się da i zidentyfikować problematyczne.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Kiedyś próbowałem zrobić backup tej bazy. W PT4 pisało, że niby się zrobił, ale zajmował kilkaset KB, a z poziomu pgAdmin wywalało błąd w połowie, backup co prawda zajmował te 300MB, ale nie szło z niego przywrócić bazy, bo zawieszał pgAdmin'a.

      Spróbowałem po prostu do istniejącej bazy przywrócić uszkodzone tabele z backupa stworzonego z nowej bazy. Niby przywracanie przebiegło pomyślnie, ale nic się nie zmieniło - podczas reindexowania tych tabel dalej wyskakiwało "ERROR: concurrent insert in progress".

      Pomyslałem, że najpierw usune indeksy i wtedy spróbuje przywrócić je z backupa. Sposób zadziałał! Mogłem bez problemowo przeglądać ręce w PT4.

      Niestety dalej nie dało się zrobić backupa bazy, a opcja eksportu notatek również szwankowała. Na siłę mozna byłoby po prostu przekopiować notatka z każdą ręką do np. notatnika, ale przy liczbie >100 rak...

      Okazało się, że uszkodzone są również kolumny w tabeli. Wpadłem na genialny pomysł, że zrobię z nimi to samo, co z indeksami - wypieprzyłem je i przywróciłem z nowej bazy :facepalm: Po chwili uświadomiłem sobie, że wypieprzyłem 3/4 bazy... PT4 przestał wyświetlać jakiekolwiek ręce.

      Nie straciłem jednak nadziei - całkiem możliwe, że wywaliłem ręce, ale nie dane na temat przypisanych do nich notatek. Spróbowałem zaimportować do bazy wszystkie ręce ponownie. Okazało się, że ręce wciąż znajdują się w bazie - PT4 zaimportowane ręce określił jako duplikaty. Niestety mimo zaimportowania jeszcze raz wszystkich rąk PT4 dalej nie wyświetla żadnej ręki.

      Teraz mam zamiar spróbować dwóch opcji.

      Do starej bazy przywrócę tabele z backupa zrobionego z nowej bazy, ale tym razem będzie to backup z bazy do której zaimportuje te same ręce, co są w starej bazie.

      Jeśli to się nie uda się to spróbuje zrobić backupa tego, co zostało ze starej bazy i przywrócić go w nowej bazie.

      Zdam relacje :D Wish me luck...
    • emomaniac
      emomaniac
      Brąz
      na forum od: 11.08.2006 Posty: 2 420
      :nh
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Pierwszy sposób zawiódł :( Przywróciłem usunięte tabele backupem z nowej bazy, która miała te same ręce, ale PT4 dalej nie wyświetla żadnych rąk...

      Masz jakiś pomysł jak zgrać przywrócone nowe tabele ze starą bazą?

      Z drugim sposobem mam problem, ponieważ backup starej bazy robiłem w PostgreSQL 8.4, a przywrócić go chcę w PostgreSQL 8.3.


      Znalazłem temat (click) na forum enterprisedb, w którym rozwiązali ten problem, ale nie mogę załapać jak... Trzeba chyba zrobić to z wiersza poleceń ustawiając odpowiednią wersje, ale nie znam się na tym.
    • rnmt
      rnmt
      Brąz
      na forum od: 08.01.2007 Posty: 27
      EvLeisure, ale namieszałeś.
      Jeżeli nowa baza pochodzi z danych, które dostałeś od PS, to nie połączysz jej z innymi tabelami ze starej bazy. Te same ręce w nowej i w starej bazie mają inny id_hand.
      Nie wiem, czy dobrze zrozumiałem, to co pisałeś usuwaniu danych i ich przywracaniu, ale jeżeli masz w całości, ze starej bazy, tabele:
      cash_hand_histories
      tags
      notes
      player
      to wszystko możesz odzyskać. Napisz w jakim one są stanie to pomyślimy, co dalej.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Uszkodzona była jedynie tabela "tourney_hand_player_statistics". Z innymi wszystko raczej jest w porządku - w tym z "tourney_hand_histories".

      Napisane przez rnmt
      EvLeisure, ale namieszałeś.
      :f_biggrin:
    • dragoste
      dragoste
      Brąz
      na forum od: 07.05.2010 Posty: 4 468
      Widzę, że akcja nabrała rozpędu. :s_ugly:

      Dodam, że to mógł być problem z customowymi statystykami. Dodawałeś jakieś?

      Pozdrawiam.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Używałem jedną w raportach wyświetlającą ilość zdobytych VPPs'ów, ale używam jej również teraz i nie sprawia ona żadnych problemów.
    • rnmt
      rnmt
      Brąz
      na forum od: 08.01.2007 Posty: 27
      EvLeisure,
      faktycznie zapomniałem o turniejach.

      Pomyśl o czymś takim:
      -założenie nowej bazy testowej, na podstawie danych od PS.
      -skopiowanie pod innymi nazwami, do nowej bazy tabel: cash_hand_histories, tourney_hand_histories, tags, notes, player.
      - porównując kolumnę history ustalenie jakie hand_id mają ręce w nowej bazie, analogicznie w tabeli player porównując player_name i id_site ustalenie id_player w nowej bazie. Na podstawie tych informacji wykonanie insertów do tabel tags i notes.
      -włączenie PT4 i otarcie potu z czoła.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Ile byś sobie za to życzył?

      Nie wiem jak skopiować tabele pod innymi nazwami, jak porównać kolumnę history ani co znaczy "wykonanie insertów do tabel tags i notes" :f_biggrin:

      Pokombinuje jeszcze sam, ale boje się, że znowu więcej namieszam niż naprawie.

      Napisane przez evLeisure
      Z drugim sposobem mam problem, ponieważ backup starej bazy robiłem w PostgreSQL 8.4, a przywrócić go chcę w PostgreSQL 8.3.


      Znalazłem temat (click) na forum enterprisedb, w którym rozwiązali ten problem, ale nie mogę załapać jak... Trzeba chyba zrobić to z wiersza poleceń ustawiając odpowiednią wersje, ale nie znam się na tym.
      Wiesz jak sobie z tym poradzić? Jeśli skopiowanie tabel pod innymi nazwami wykonuje się za pomocą funkcji restore to na razie nie mam w ogóle jak spróbować.
    • rnmt
      rnmt
      Brąz
      na forum od: 08.01.2007 Posty: 27
      Z importem/eksportem przez pgAdmin raczej nie pomogę, ale jeżeli chcesz poeksperymentować z tym, o czym pisałem wcześniej to możemy pogadać na skype.
    • evLeisure
      evLeisure
      Brąz
      na forum od: 14.11.2011 Posty: 3 051
      Wysłałem zaproszenie.