Konwersje, przenoszenie, łączenie forów, integracje - Dołączenie odzyskanych postów do forum po jakimś czasie
tombog - 13-12-2016, 13:23 Temat postu: Dołączenie odzyskanych postów do forum po jakimś czasie Witam. Problem wygląda następująco:
1. Padł serwer domowy z forum. Brak możliwości zgrania ostatnich baz.
2. Wykupiłem serwer w home.pl i z jakiegoś starego backupu odbudowałem forum.
3. Forum sobie żyło na home.pl przez 1,5 roku. Przybyło postów, userów, niektórzy musieli zarejestrować się ponownie (zmienione więc USER ID) itd.
4. Udało się w końcu dostać do danych na padniętym serwerze (macierz raid) i zgrać bazę z dnia awarii.
5. Postawiłem domowy serwer w celu uruchomienia forum z tą odzyskaną bazą.
6. z poziomu phpMyAdmin wyeksportowałem pojedyncze, osobne tabele. Zapewne nie wszystkie trzeba podmienić na aktualnym forum
7. Przekonwertowałem w editplus tabele na utf-8
Teraz założenia:
Czy da się w jakiś cywilizowany sposób połączyć zawartość odzyskanych baz z nowo powstałymi wpisami na działającym aktualnie forum? Czyli chciałbym dodać nowe wpisy do tych starych baz ale nie wiem jak to zrobić. ID tematów, postów i użytkowników, którzy je napisali rozjadą się zapewne. Zależy mi głównie na dodaniu do odzyskanych baz postów powstałych w międzyczasie na forum. użytkowników jest stosunkowo mało i powiedzmy, że dało by się ich poprawić ręcznie.
Macie jakieś pomysły, doświadczenia w tym temacie? Na jakie zależności w tabelach powinienem zwrócić uwagę by je odpowiednio "pokrosować"? W jakich tabelach muszę grzebać by to uporządkować?
Dodam, że szukałem już na forum rozwiązania, ale dokładnie takiego problemu nie znalazłem.
Woytec - 13-12-2016, 15:35
tombog napisał/a: | Na jakie zależności w tabelach powinienem zwrócić uwagę by je odpowiednio "pokrosować"? W jakich tabelach muszę grzebać by to uporządkować? |
phpbb_topics, phpbb_posts, phpbb_posts_text.
tombog - 13-12-2016, 17:35
OK, więc doszedłem do tego, że zgodność w bazach aktualnej i odzyskanej kolumny post_id w phpbb_posts kończy się na numerze 37544. Kolejne post_id są już rozjechane. W tabeli odzyskanej są właściwe posty stare po d tymi id a w aktualnej tabeli pod tymi samymi numerami są już posty z nowego forum.
Można teoretycznie skopiować nowe posty z aktualnej tabeli na koniec tabeli odzyskanej, np w editplus. Pozostaje tylko jak nadać nowe id kilku tysiącom postów z aktualnej tabeli w sposób cywilizowany, najlepiej automatyczny. Macie jakiś patent? Może w phpmyadmin jest jakiś sposób poleceniem odpowiednim, np:
w tabli phpbb_posts, w kolumnie post_id podnieś wartość o 17357 ? Nie znam dobrze składni.. Może by mi ktoś podpowiedział czy tak się da i jakiej składni zapytania użyć?
Oczywiście potem czeka mnie to samo w post_text
Woytec - 13-12-2016, 19:33
Można by skryptem zwiększać o zadaną ilość.
tombog - 13-12-2016, 20:05
Myślę, że wystarczy proste zapytanie do bazy typu UPGRADE, tylko czy ktoś byłby w stanie zaproponować składnię ?
[ Dodano: 14-12-2016, 21:03 ]
OK, poradziłem sobie sam z problemem. Mam jednak pytanie dotyczące sposobu nadawania post_id w tabeli phpbb_posts. Omyłkowo część wierszy przedefiniowałem na wartość o 1000000 większą. Miałem to zrobić na tabeli roboczej a wykonałem na używanej. Dzięki temu z forum zniknęły wszystkie posty. Kiedy zauważyłem swój błąd zmieniłem ponownie wartość post_id na poprzednie. Wszystko wróciło do normy.
Problem jednak polega na tym, że wieczorem siadając znowu do pracy nad tabelami zauważyłem, że nowe posty dostają już numerację id większą o ten milion. Gdzieś musi być zaszyta informacja o ostatnim id posta? Jak sprawić, by posty nymerowały się znowu po kolei od tej mniejszej wartości? Gdzie szukać winnego wpisu?
Woytec - 14-12-2016, 23:17
tombog napisał/a: | Problem jednak polega na tym, że wieczorem siadając znowu do pracy nad tabelami zauważyłem, że nowe posty dostają już numerację id większą o ten milion. Gdzieś musi być zaszyta informacja o ostatnim id posta? Jak sprawić, by posty nymerowały się znowu po kolei od tej mniejszej wartości? Gdzie szukać winnego wpisu? | W opcjach tabeli poszukaj AUTO_INCREMENT. Ustaw na większy niż najwyższy ID.
|
|
|