Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

ROZWIĄZANY: konwersja IPB 1.3 na 3.0.5 (przejście przy okazji z latin1 na utf8)


Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam,

to mój pierwszy post na tym forum. Jeśli jest w niewłaściwym miejscu, to przepraszam.

Otóż odziedziczyłem forum, niestety prehistoryczne, w wersji 1.3 i mam kilka problemów:

1. Nie można wyświetlić danych użytkownika - widać po prostu białą pustą stronę; czy ktoś może pamięta, dlaczego to się działo w tym systemie? Może to jest związane z aktualizacją php, mysql i apache do najnowszych wersji?

2. Bazy danych są niestety w latin1 zgodnie z załącznikiem 'bazad_struktura1.jpg'. Chciałbym zrobić konwersję na utf8, która byłaby wstępem do migracji do najnowszej wersji systemu.

I stąd pytania:

a. Kiedy najlepiej wykonać konwersję bazy danych? Przed migrowaniem do nowszych wersji? W czasie? Po?

b. Jak najlepiej dokonać konwersji, by później nie było problemów z haszczami? Czy wystarczy zwykłe: "ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"?

c. Czy po przegraniu najnowszej wersji forum do właściwego katalogu, update wykona się automatycznie? Czy trzeba będzie update'ować jakimiś pośrednimi wersjami?

Dziękuję z góry za pomoc!

post-1955-71207_thumb.jpg

Edytowane przez chrees
  • Manager
Opublikowano

Witamy na forum! :D

Ad a - ja bym zrobił na wersji już 1.3

Ad b - to zmienisz kodowanie tabel, a co z polami w tabelach no i najważniejsze - znakami w tabelach? Polecam gżegżółkę, lub niedawny post użytkownika maxx.

Ad c - nie. Polecam: Aktualizacja forum do wersji z serii 2.x do 3.x oraz aktualizacje wewnątrz serii 3.x.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano (edytowane)

Zrobiłem konwersję do 3.0.2

Pierwsze z czym się mocowałem to tłumaczenie: nie chciało w ogóle wyświetlać polskich znaków. Z tym sobie poradziłem instalując czyste forum a potem dogrywając tłumaczenie. Potem już tylko przywrócenie danych sprzed instalacji i już jest wszystko, oprócz....

Kodowania :D

To jest drugi problem. Przewertowałem forum w tę i we w tę (:D' ) w jeśli gdziekolwiek jest pomoc to dotyczy ona tylko latin2, a u mnie jest to, co w załączniku... masz pomysł, jak to ugryźć?

Będę wdzięczny za jakiekolwiek informacje

Ch.

post-1955-69748_thumb.jpg

Edytowane przez chrees
Opublikowano

Jakie kodowanie? Tabel? Bo to pokazałeś na screenie - zmień ręcznie, a na przyszłość pamiętaj o zmianie kodowania bazy, by nowe tabele 'odziedziczyły' po niej kodowanie.

Nie, nie, nie zrozumieliśmy się :D

Ja robiłem najpierw tak:

Zrobiłem konwersję z wersji 1.3 na 2.3.6, a potem do 3.0.2. Dane w tabelach w wersji 1.3 były kodowane latin1_swedish_ci.

Następnie zbackupowałem dane, wyczyściłem całą bazę z danych i tabel, baza danych miała już wcześniej ustawione utf8_general_ci.

Na tak przygotowane środowisko zainstalowałem na czysto forum w wersji 3.0.2. Po czym znów wymazałem dane i tabele, i przywróciłem backup. (Zrobiłem to po to, bo nie mogłem znaleźć, gdzie się przestawia w tej wersji skryptu kodowanie strony. Wtedy to zadziałało, ale teraz patrzę, że znów kodowanie jest w iso-8859-1, a nie w uft8 ;| )

Wobec tego, efekt jest teraz taki, że część tabel ma kodowanie utf8_general_ci, a część (z danymi np. postów) jest zakodowana w latin1_swedish_ci. W załącznikach pokazuję, jak to wygląda w tabeli ibf_posts.

O takie informacje chodziło?

JA wiem, że ręcznie mogę zmienić kodowanie tabeli, ale co z kodowaniem danych w nich? Jak je zmienić?

post-1955-1267557555,6337_thumb.jpg

post-1955-1267557560,5499_thumb.jpg

Opublikowano

Hej,

no ja już powoli wymiękam, albo czegoś nie rozumiem, albo jak...

Instaluję całkiem nowe forum (tak dla testu)

Baza danych jest ustawiona na "uft8_general_ci".

"show variables like 'character%'" pokazuje:

character_set_client utf8

character_set_connection utf8

character_set_database utf8

character_set_filesystem binary

character_set_results utf8

character_set_server utf8

character_set_system utf8

character_sets_dir /usr/share/mysql/charsets/

"show variables like 'collation%'"

collation_connection utf8_general_ci

collation_database utf8_general_ci

collation_server utf8_general_ci

tabele i pola tekstowe to też "utf8_general_ci"

Strona forum ma w meta <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

wpisuję jako nowy post i wątek: "testowa ąĄśźćżłęó", zatwierdzam i widze ładny pościk.

Natomiast w phpmyadmin ustawionym na utf8 w przeglądzie danych widzę to co w załączniku.

Skąd on to bierze? Dlaczego nie widać poprawnych danych?

Pytam o to w kontekście przepompowania danych ze starego forum, które udało mi się w końcu zakodować w utf8 - potej czynności niestety pojawiają się chaszcze...

post-1955-101103_thumb.jpg

  • Manager
Opublikowano

Nie wiem czemu się dziwisz. Znaki utf8 to utf8, a nie latin2.. Jeśli chcesz w bazie i na forum polskie znaki widoczne nie w formie krzaków, to zainstaluj forum na latin2 lub wymuś to kodowanie. Więcej info znajdziesz w temacie w tutorialach ( jeden z pierwszych tam ).

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Nie wiem czemu się dziwisz. Znaki utf8 to utf8, a nie latin2.. Jeśli chcesz w bazie i na forum polskie znaki widoczne nie w formie krzaków, to zainstaluj forum na latin2 lub wymuś to kodowanie. Więcej info znajdziesz w temacie w tutorialach ( jeden z pierwszych tam ).

Ta, przecież wiem, że nie to samo.

Na razie pracuję na pustym forum, kompletnie od nowa postawionym, bez wczytania danych ze starego. Wszystko co potrafię znaleźć jest ustawione na utf8.

Właśnie tam zakładam nowy wątek z przykładowymi polskimi znakami i później w przeglądzie w phpmyadmin są chaszcze.

Tutaj nigdzie nie ma mowy o latin2. cały system nie powinien w tym momencie się nawet o to ocierać

Opublikowano (edytowane)

Nie, chce całość przerobić na utf8, nie chce mieć nic wspólnego z latin2.

Wiesz dlaczego się tak dzieje, że nie widzę poprawnie tych znaków? (z ogonkami)

I z tego co widzę, te znaki są chyba w latin2 nie mam pojęcia dlaczego, a na dodatek z wariacjami A z przodu.

Edytowane przez chrees
  • Manager
Opublikowano

No to Ci mówię, że generalnie polskie ogonki zapisane w kodowaniu utf8 na pewno nie są w takiej formie, jak je czytasz. Powinny być z encjami lub tak, jak tam jest. Nie widzę tutaj nic złego w działaniu.

Jeśli chcesz to możesz istniejące zamienić gżegżółką, a dla nowych pokombinować z kodem podanym ww. tutorialu.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Hej,

próbowałem już każdej chyba konwersji i dalej nie wiem.

W załączniku umieszczam zrzut fragmentu tabeli ibf_posts z phpmyadmin. W insercie są trzy wiersze dwa pierwsze są widoczne jako krzaczki (możesz zobaczyć wynik w liku, który podesłałem Ci na priva), ostatni został wpisany dla porównania przez forum i jest jak najbardziej poprawnie widoczny na nim.

Jak przerobić by całość była widoczna poprawnie?

Pozdrawiam

ibf_posts.sql.gz

Opublikowano

Konwersja forum z 1.3 (baza w latin1 [latin1_swedish_ci]) do 3.0.x (baza w utf8 [utf8_general_ci])

- konwersja forum z 1.3 do 2.3.6

- konwersja forum z 2.3.6 do 3.0.x - nalezy śledzić konwersję. U mnie powstały dwa błędy, przy modyfikowaniu tabel konwerter chciał dwa razy dodać tę samą kolumnę do niektórych tabel

- backup bazy - do tworzenia backupów w mysql'u polecam MYSQLDumper'a - bardzo dobre i praktyczne narzędzie

- wyczyszczenie bazy danych - usunięcie wszystkich tabel

- jeśli jest to konieczne konwersja bazy danych na utf-8 (collapse utf8_general_ci)

- instalacja forum w wersji 3.0.x

- przywrócenie z backupu nast epujących tabel:

ibf_admin_login_logs

ibf_admin_logs

ibf_email_logs

ibf_faq

ibf_forums

ibf_groups

ibf_members

ibf_message_posts

ibf_message_text

ibf_message_topic_user_map

ibf_message_topics

ibf_message_topics_old

ibf_moderator_logs

ibf_moderators

ibf_pfields_content

ibf_pfields_data

ibf_pfields_groups

ibf_posts

ibf_profile_portal

ibf_topics

ibf_topic_views

ibf_tracker

Te tabele kopiowałem na "czuja", sugerując się ilością wierszy, nazwami itp. Nie ruszałem żadnych tabel z ustawieniami. Wiąże się to z powodem instalowania od początku: otóż po konwersji u mnie strona była kodowana ciągle w iso-8859-1 i to pomimo ustawiania w configuracji utf-8. Może ktoś wie, gdzie to zmienić, żeby od razu było, jak trzeba???

- konwersja tabel i atrybutów w tabelach z pomocą opisu przedstawionego przez swista:

-wrzucenie na serwer

-zakomentowanie ostrzeżenie

-uruchomienie w przeglądarce

-skopiowanie wyniku do np. phpadmina i wykonanie go

WAŻNE: może być konieczne korekta zapytań ALTER, tak aby było jedno w jednym wierszu (wiąże się to z typami danych varchar() i dodatkowym enterem w skopiowanym skrypcie

- backup bazy (tak na wszelki wypadek) w w MYSQLDumper'ze

- backup bazy danych w ACP - tylko tu udało mi się dostać plik, który poźniej można było w miarę normalnie obrobić i nie powodowało to dodatkowych sensacji z ogonkami; należy dodać CREATE

- konwersja pliku w Gżegżółce XP - u mnie najlepiej wyszło konwertowanie z "windows 1250 (Europa Środkowa)" na "Unicode UTF-8"

- obróbka w notepad++ - jeden z lepszych edytorów;

UWAGA!!! Obróbka duzych plików wymaga anieeeelskiej ciepliwości i dużej ilości ramu :a:

UWAGA!!! Przed dokonaniem jakiejkolwiek czynności zamieniamy w menu "Format" na "UTF8"

-na samym początku dodajemy nowy wiersz z tekstem "use forum;" gdzie forum to nazwa naszej bazy danych

-sprawdzamy czy wpisy polskich znaków zostały poprawnie skonwertowane; jeśli nie, to należy użyć funkcji zamień i zamienić występujący haszcz na polski znak

-zapisujemy plik i zamykamy edytor.

- tak obrobiony plik wrzucamy na serwer, np. przy pomocy ftp; ja miałem możliwość wrzucania przez ssh i program WinSCP

- w phpmyadminie usuwamy wszystkie tabele z naszej bazy danych

- logujemy się za pomocą ssh do serwera i przechodzimy do katalogu, w którym zapisaliśmy nasz obrobiony plik

- wywołujemy wykonanie zapytań z naszczego pliku, np. komendą "mysql -u root -p < ipb_db_backup.sql"

- trochę czekamy i mamy załadowane dane

- u mnie to było wszystko, dane były prawidłowe i prawidłowo wyświetlały się na stronie. No, na jkońcu było dobre piwko :unsure:

Uwagi:

- po załadowaniu danych w niektórych miejscach (tematach i podpisach) były ciągle haszcze. Najdziwniejsze jest to, że po wywołaniu funkcji edytuj (w przypadku postów) i podglądu profilu użytkownika (w przypadku podpisów), wszystko wracało do normy. Podejrzewam, że jest to związane z zawartością tabel cache. Generalnie pomogło użycie funkcji: "Przebuduj zawartość [posty, wpisy w kalendarzu, prywatne wiadomości, ogłoszenia, sygnatury]" w menu "Tools & Settings > Recount & Rebuild > Recount & Rebuild" w ACP. Może zna ktoś inny sposób?

- ważne by skopiować załączniki, avatary i różne takie ze starego forum.

Czekam na uwagi i spostrzeżenia dotyczące tego poradnika

  • Lubię to 1
  • 3 tygodnie później...
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.