| Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-04-2010 14:35 |
|
|
Obiecywałem == Zrobiłem.
Poniższa instrukcja przedstawia sposób na zmianę kodowania bazy danych z latin1/latin2 na utf-8:
Proszę uważnie ją przeczytać zanim dokonasz jakichkolwiek działań... :)
I. Posiadasz eXtreme-Fusion v4.15 i w dół:
1.) Zaloguj się do Panelu Administracyjnego strony opartej o eXtreme-Fusion.
2.) Przejdź w "Dodatkowe strony".
3.) W polu "Nazwa" wpisz:
Panel podglądowy zmieniający super tajne dane...
4.) w polu "Zawartość" wpisz:
<?php
$result = dbquery("UPDATE ".$db_prefix."settings SET version = '6.01.9 || EF IV';");
echo (($result == TRUE) ? "Zmiany dokonane prawidłowo" : "Nie można było dokonać zmian.");
?>
5.) Przyciśnij przycisk "Podgląd".
6.) Jeśli otrzymałeś komunikat pozytywny przejdź do pkt. 13.). Jeśli komunikat był negatywny przejdź do pkt. 7.).
7.) Zaloguj się na konto z uprawnieniami dostępu do bazy danych, można to zrobić przez panel PHPMyAdmin lub też innych systemów/programów.
8.) Odnajdź i przeglądaj tabelę twoj_prefix_settings (domyślnie ep_settings/ef_settings).
9.) Wybierz ołówek po lewej stronie tabeli (oznaczający "zmień").
10.) Odnajdź wiersz w którym znajduje się pole "version".
11.) Zmień jego zawartość na:
6.01.9 || EF IV
12.) Zapisz zmiany przyciskając przycisk "Wykonaj".
13.) Wykonaj kopię bezpieczeństwa bazy danych, przechodząc do głównej listy baz danych wybierz swoją bazę a następnie dokonaj Eksportu.
14.) Zapisz kopię w bezpiecznym miejscu.
II. Posiadasz PHP-Fusion v6 i PHP-Fusion v7 ISO:
1.) Wykonaj kopię bezpieczeństwa bazy danych, przechodząc do głównej listy baz danych wybierz swoją bazę a następnie dokonaj Eksportu.
2.) Zapisz kopię w bezpiecznym miejscu.
III. Pobierz skrypt:
1.) Pobierz skrypt który umożliwi Ci dokonania szybkiej konwersji bazy danych.
W załączniku.
3.) Zaloguj się na FTP przez swojego klienta.
4.) Przejdź do głównego katalogu PHP-Fusion/eXtreme-Fusion.
5.) Umieść zawartość archiwum w głównym katalogu.
Schematycznie:
/config.php
/konwerter/*
6.) Przejdź na swoją stronę internetową http://www.adres_twojej_strony.pl/konwerter/
7.) Wybierz aktualne kodowanie bazy danych, przeważnie latin1 lub latin2.
8.) Wybierz nowe kodowanie bazy danych (zalecane utf8_unicode_ci)
9.) Wybierz metodę konwersji bazy danych z pośród:
- MYQSL - CONVERT
- MB String
- iconv
Nie ma żadnego znaczenia jakiej metody użyjemy, jest to tylko uzależnione od tego czy serwer posiada konkretną opcję.
10.) Przyciśnij "Konwertuj".
Podczas konwersji bazy danych będziesz na bieżąco informowany o postępie, oraz będziesz dostawał konkretne informacje związane z procesem. Czas trwania procesu jest uzależniony od rozmiarów posiadanej przez was bazy.
Proszę obserwować uważnie każdy etap procesu (na wszelki wypadek gdyby były problemy).
IV Konwersja zakończona.
1.) Usuń konwerter z serwera lub zabezpiecz go w sposób odpowiedni.
2.) Otwórz swój plik config.php
Znajdź:
$db_prefix = "stary_prefix_";
define("DB_PREFIX", "stary_prefix_");
Zamień na:
$db_prefix = "new_stary_prefix_";
define("DB_PREFIX", "new_stary_prefix_");
Jak widać dodać musisz przed swoim starym prefixem przedrostek new_
3.) Zapisz i wyślij plik na serwer.
4.) Możesz dokonać usunięcia tabel z starym prefixem (nie jest to obowiązkowe ale możesz zaoszczędzić sobie miejsca).
V Poczynania manualne:
eXtreme-Fusion & PHP-Fusion v6
1.) Po udanej operacji musisz zmienić wszystkie pliki językowe (przekonwertować je na pliki zapisane w formacie utf-8 bez bom).
2.) Aby przystosować stronę do strony kodowej utf8 musisz jeszcze odnaleźć:
/locale/Polish/global.php
/locale/English/global.php
Odnajdź:
$locale['charset'] = "iso-8859-1";
Zamień na:
$locale['charset'] = "utf8";
Zapisz i wyślij na serwer.
PHP-Fusion v7 ISO
1.) Musisz jedynie pobrać samą paczkę językową UTF-8 i wrzucić ją na swój serwer.
2.) Zmień język strony z Polish na Polish-utf8, zrobisz to w ustawieniach głównych.
VI Modyfikacja plików + zapytanie :) - eXtreme-Fusion, PHP-Fusion v6/v7
1.) Otwórz plik /maincore.php
2.) Znajdź:
$db_select = @mysql_select_db($db_name);
Pod dodaj:
dbquery("SET NAMES utf8");
dbquery("SET CHARACTER SET utf8");
3.) Zapisz plik i wyślij na serwer.
4.) Przejdź w "Dodatkowe strony/Strony informacyjne"
5.) W polu "Nazwa" wpisz:
Panel podglądowy zmieniający super tajne dane...
6.) w polu "Zawartość" wpisz:
<?php
$result = dbquery("ALTER DATABASE `".$db_name."` charset=utf8");
echo (($result == TRUE) ? "Zmiany dokonane prawidłowo" : "Nie można było dokonać zmian.");
?>
7.) W zależności od tego czy posiadasz PHP-Fusion v7 czy też v6 i eXtreme-Fusion wpisz hasło jeśli wymagane i kliknij "Podgląd".
8.) Koniec... ;)
Więcej nie pamiętam, ale na pewno to wszystko co jest wymagane.
Krótkie info:
Skrypt działa na jednej bazie danych kopiując strukturę tabel, a następnie prze-konwertując kolejno dane w polach zresztą widać będzie podczas jego pracy. Podstawą skryptu jest konwerter Tośka --> http://tosiek.pl troszkę go wizualnie przerobiłem, okroiłem, przepisałem troszkę komunikatów teraz jakoś wygląda ;)
Gratulacje dla pierwszego użytkownika który dokona konwersji bazy danych wraz z CMS pod UTF-8 :)
Pozdro!
~Rafik89
 Rafik89 dodał/a następujący plik: konwerter_latin_utf8_database.zip
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-04-2010 15:19 |
|
|
A po co mamy zmieniać nazwę wersji ? Nie kumam...
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-04-2010 15:22 |
|
|
|
Rafik89 napisał/a:
Gratulacje dla pierwszego użytkownika który dokona konwersji bazy danych wraz z CMS pod UTF-8 :)
Pierwszy pewnie nie będę bo jeszcze w pracy siedzę ale postaram się dziś to ogarnąć przed snem :P Pomocne ^^
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-04-2010 15:24 |
|
|
|
Domon napisał/a:
A po co mamy zmieniać nazwę wersji ? Nie kumam...
Bo konwerter napotyka problem z konwersją apostrofa który znajduje się w tym polu. Zresztą jest tam od zawsze co jest błędem.
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-04-2010 15:46 |
|
|
Aha :)
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-04-2010 23:43 |
|
|
Dobra to ja już mam problem :D
Wykryło prefix opcje wyboru kodowania są jak napisałeś. Poniżej mam:
Sukces:
1. Połączono poprawnie z bazą danych.
2. Pobrano ustawienia kodowania.
3. Pobrano ustawienia porównań.
Na zielono więc ok, jeszcze niżej mam
Aktualne ustawienia MySQL
character_set_client
latin2
character_set_connection
latin2
character_set_database
latin2
character_set_filesystem
binary
character_set_results
latin2
character_set_server
latin2
character_set_system
utf8
character_sets_dir
/usr/local/mysql/share/mysql/charsets/
collation_connection
latin2_general_ci
collation_database
latin2_general_ci
collation_server
latin2_general_ci
Ale jak kliknę konwertuj nie ważne jaką metodą to po kliknięciu konwersji przenosi na kolejną stronę gdzie mam między innymi na czerwono że nie wykryto kopii bazy (dziwne skąd może wiedzieć czy mam kopie czy nie - na serwie nie mam w katalogu administrations bo i po co wystarczy że jest na dysku i że pod inną nazwą zapisana w bazie więc nie wiem jak miałbym zrobić kopie żeby wykrył ją w wierszu 97 ) i po chwili przeładowuje stronkę z errorem:
Fatal error: [] operator not supported for strings in /home/ (..sciezka..)/konwerter/index.php on line 133
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 01-05-2010 01:01 |
|
|
http://extreme-fusion.pl/converter.php ?????
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 03-05-2010 18:44 |
|
|
Medyq - Kopia utworzonej struktury bazy danych :) w tej samej tabeli :)
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 03-05-2010 20:44 |
|
|
Tu to się zrobiła kopia. Zamiast np 90 tabel w bazie mam ich 180 z prefixem (new_ ) tylko że są puste każda (bez danych tylko kolumny struktury :) ) chyba że z początku mają być puste :P
Tylko co teraz? :)
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 04-05-2010 14:36 |
|
|
Tak muszą być puste. Potem uzupełniają się prze konwertowanymi danymi. Tylko ten błąd u Ciebie jest jeden ;)
Zamień 133 z:
$table[] = $tabela['0'];
na
$table[''] = $tabela['0'];
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 27-05-2010 11:29 |
|
|
|
Błędy:
1. Błąd bazy danych. (1050):Table 'new_ep_admin' already exists
2. Błąd bazy danych. (1050):Table 'new_ep_announcements' already exists
3. Błąd bazy danych. (1050):Table 'new_ep_article_cats' already exists
4. Błąd bazy danych. (1050):Table 'new_ep_articles' already exists
5. Błąd bazy danych. (1050):Table 'new_ep_atwork' already exists
az do 81
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 27-05-2010 11:31 |
|
|
Usuń te tabele które mają przedrostek new_ep_
Po za tym robiłeś wszystko wedle instrukcji?
Przeczytaj 3 razy najlepiej.
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 27-05-2010 11:41 |
|
|
owszem krok po kroku :P
wszystko jest OK do momentu jak sie samo odświeża
po czym wyskakuje to co napisałem powyżej :)
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 29-05-2010 00:52 |
|
|
Zaraz na początku wywala mi błąd:
Błąd bazy danych. (1146):Table 'nazwatabeli.w' doesn't exist
Kiedy usunąłem tabele z początkiem na 'w' fragment komunikatu zmienił się na 'nazwatabeli.u'. Konwerter nie czyta chyba pełnej nazwy tabeli.
Wersja PF7 najnowsza, konwersje przeprowadzam na VertigoServ na localu.
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 29-05-2010 04:43 |
|
|
Spróbuj na najnowszym xampp?
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 29-05-2010 10:35 |
|
|
Rafik89 dzięki zadziałało. Nie da rady tak przekonwertować bazy, aby nie było konieczności wymuszania kodowania w pliku maincore.php ?
Jakiego kodowania wyjściowego użyć - utf8_unicode_ci tak jak polecasz?
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 30-05-2010 07:49 |
|
|
Tak utf8_unicode_ci będzie odpowiednie.
Bez modyfikacji maincore nie bardzo bo przy późniejszej instalacji nowych infusionów(przy tworzeniu nowych tabel) będą tworzyły się w innym kodowaniu więc już będą krzaczyć.
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 31-05-2010 01:21 |
|
|
Dzięki za porady. Wszystko już prawie się udało. Niestety skrypt nie do końca przekonwertował mi artykuły. Na starym prefiksie jest 266 rekordów, na prefiksie new_ tylko 210. Jak zmodyfikować konwerter aby przekonwertował on tylko tabelę articles, a nie całość?
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 31-05-2010 09:29 |
|
|
Hmm, mi także się krzaczyło i miałem te same problemy co kolega wyżej dlatego ostatecznie zrobiłem inaczej - na około ale to pewnie wina mojej bazy która jest ciut rozje*** i czasem nawet się nie daje exportnąć/zaimportować xd.
- Wyeksportowałem bazę danych jako te standardowe latin2
- Następnie na localu w xampie stworzyłem bazę danych utf,
- Zaimportowałem bazę używając utf
- Zmieniłem ręcznie (niestety ah te 90 tabel xd ) wszystkie latiny na utf_general_ci zarówno w każdej z tabel jak i dla każdego wiersza każdej tabeli tam gdzie było trzeba.
- export tak spreparowanej bazy.
- Utworzenie na serwerze bazy utf
- Import bazy zmodyfikowanej na localu jako utf na serwer
Na koniec jak okazało się że polskie końcówki są ok w bazie zostaje tylko modyfikacja zapisu w header na utf-8 oraz dopisane te 2 linijki w mainore.php
Dziś skończę dostosowywać locale - 80% już zrobiłem i załącze w tym temacie te standardowe pliki językowe dla leniwych.
Przepuszczenie bazy przez konwerter sobie więc darowałem bo jestem na to za ciemny xd Tabel tworża się jako utf_general_ci i wszystko włącznie z przepuszczaniem skryptów przez jquery jest ok.
|
|
|
| RE: Konwerter bazy danych ISO --> UTF-8 || Dodane dnia 31-05-2010 09:46 |
|
|
@4r73k - Wyeksportuj samą tabelę do sql, później przepuść zawartość przez http://www.kurshtml.boo.pl/generatory/win2iso.html
@medyq - Lubisz sobie utrudniać, jak widać jest wiele sposobów, lecz nie zawsze akurat ten się sprawdza, chociażby z tego faktu, że konfiguracja serwera może powodować problemy. Też swego czasu ręcznie dokonywałem konwersji lecz jest to żmudna robota :)
Jeśli w polu znajduje się zapis z znakiem cudzysłowowy lub też apostrofem bez backslasha poprzedzającego ten znak mogą wystąpić problemy z konwersją wszystkich pól, skrypt po prostu uzna te błędne jako koniec danych. Jak to było w przypadku kolegi @4r73k.
|
|
|