Szukaj:     Szukanie zaawansowane
Szukaj w kategoriach:
Napisz do nas

Jak przenieść bazę danych MySQL z zachowaniem polskich znaków diakrytycznych?

Dodaj komentarz
Odsłon: 21560
Komentarze: 0
Posted: 26 Mar, 2007
by: Czejgis Ł.
Updated: 05 Feb, 2009
by: Czejgis Ł.

UWAGA! PONIŻSZY ARTYKUŁ MA CHARAKTER ARTYKUŁU BETA!
ZNACZY TO, ŻE OPISANY PONIŻEJ SPOSÓB MA PRAWO NIE ZADZIAŁAĆ W TWOIM PRZYPADKU!



JEŻELI UDA CI SIĘ PRZENIEŚĆ SWOJĄ BAZĘ DANYCH PRZY POMOCY TEGO ARTYKUŁU, DAJ NAM O TYM ZNAĆ.
W E-MAILU ZAWRZYJ NASTĘPUJĄCE INFORMACJE:
  • wersja MySQL serwera źródłowego
  • wersja MySQL serwera docelowego
  • kodowanie źródłowej bazy danych
  • kodowanie docelowej bazy danych


JEŻELI PODCZAS IMPORTU, EKSPORTU BĄDŹ CZYSZCZENIA KTÓREJKOLWIEK BAZY DANYCH
POJAWI SIĘ KOMUNIKAT BŁĘDU, SKONTAKTUJ SIĘ Z NASZYM ADMINISTRATOREM.

NIE ZASZKODZI TEŻ WPIERW POSZUKAĆ SAMEMU PRZYCZYNY =)


Jeżeli masz doświadczenie z zarządzaniem bazami danych MySQL (i komputerami w ogóle), poniższą instrukcję uznasz za aż nazbyt szczegółową, pełną rzeczy oczywistych, itd. Miej jednak na uwadze, że dla wielu użytkowników usług hostingu jest to czarna magia i nawet tak szczegółową instrukcję mogą uznać za zbyt ogólnikową.

Jeżeli znajdziesz w tym artykule jakieś błędy, literówki, nieścisłości, przeinaczenia, etc., daj nam znać: admin@windows-hosting .pl

W tym artykule pojawiają się następujące terminy:
źródłowa baza danych - baza danych MySQL, z której dane są kopiowane
docelowa baza danych - baza danych MySQL, do której dane są kopiowane

Procedura kopiowania bazy danych składa się z kilku etapów:
krok 0: zainstalowanie narzędzi do instalowania (opcjonalne)
krok 1: ustalenie, w jakim kodowaniu jest docelowa baza danych
krok 2: eksport źródłowej bazy danych do pliku tekstowego (pliku .sql)
krok 3: utworzenie kopii zapasowej docelowej bazy danych (na wszelki wypadek)
krok 4: wyczyszczenie docelowej bazy danych
krok 5: import do docelowej bazy danych


KROK 0: Zainstalowanie narzędzi do instalowania (opcjonalne) - jeżeli masz u siebie zainstalowany lokalny serwer MySQL, najprawdopodobniej masz już zainstalowane wszystkie potrzebne narzędzia. Jeżeli tak, możesz ten krok pominąć.

Jeżeli jesteś użytkownikiem systemu Windows...
1. Pobierz narzędzia do zarządzania bazą danych MySQL:
http://sunsite.informatik.rwth-aachen.de/mysql/Downloads/MySQL-5.0/mysql-essential-5.0.51b-win32.msi

2. Uruchom pobrany plik .msi i Kliknij Next >


Zaznacz Custom i kliknij na Next >


Kliknij na białej ikonie z symbolem dysku obok MySQL Server i z listy, która się pojawi, wybierz This feature will not be available


To samo zrób przy Client Programs > MySQL Server Instance Config. Efekt końcowy powinien być taki jak na obrazku poniżej. Kliknij na Next >


Kliknij na Install


Rozpocznie się proces instalacji, który może chwilę potrwać.


Wybierz Skip Sign-Up i kliknij na Next >


Kliknij na Finish


Gratulacje! Właśnie zainstalowałem narzędzia, którymi posłużysz się do przeniesienia bazy danych MySQL.


KROK 1: Ustalenie, w jakim kodowaniu jest docelowa baza danych - bez wiedzy, w jakim kodowaniu działa docelowa baza danych, nie da się prawidłowo wyeksportować źródłowej bazy danych.

Teraz trzeba ustalić w jakim kodowaniu jest baza danych, do której przenosisz swoją bazę (tzw. docelowa baza danych). Aby to zrobić...
1. Zaloguj się do phpMyAdmina docelowej bazy danych.

2. W ramce po lewej stronie wybierz docelową bazę danych.

3. W ramce po prawej stronie wybierz zakładkę Operacje

4. Spójrz teraz na dół. Powinieneś tam zobaczyć pole opisane jako Metoda porównywania napisów.
a) tak wygląda ono, jeżeli kodowanie docelowej bazy danych to utf8:


b) a tak jeśli jest to kodowanie latin2:


5. Zapisz sobie gdzieś na boku jakie jest kodowanie docelowej bazy danych, ta informacja zaraz się przyda.

Wiesz już w jakim kodowaniu pracuje docelowa baza danych.


KROK 2: Eksport źródłowej bazy danych do pliku tekstowego (pliku .sql) - ten plik trzeba będzie potem zaimportować do docelowej bazy danych

Teraz pora wykonać eksport źródłowej bazy danych do pliku tekstowego.

Aby to zrobić...
1. Uruchom wiersz poleceń (kliknij na Start > Uruchom...), wpisz cmd i wciśnij na klawiaturze Enter.

2. Powinno się wyświetlić czarne okienko.

3. Wpisz cd c:\Program Files\MySQL\MySQL Server 5.0\bin i wciśnij na klawiaturze Enter. Efekt powinien być taki:


4. Zerknij do swoich notatek i sprawdź jakie jest kodowanie docelowej bazy danych:
a) jeżeli jest to utf8 wpisz:
mysqldump --default-character-set=utf8 -h adres_serwera_bazy_danych -u nazwa_użytkownika -p -e nazwa_bazy_danych > nazwa_bazy_danych.sql

przykładowo (serwer: mysql.top100.net.pl, nazwa bazy: baza01, nazwa użytkownika: user01):
mysqldump --default-character-set=utf8 -h mysql.top100.net.pl -u user01 -p -e baza01 > baza01.sql

b) jeżeli jest to latin2 wpisz:
mysqldump --default-character-set=latin2 -h adres_serwera_bazy_danych -u nazwa_użytkownika -p -e nazwa_bazy_danych > nazwa_bazy_danych.sql

przykładowo (serwer: mysql.top100.net.pl, nazwa bazy: baza01, nazwa użytkownika: user01):
mysqldump --default-character-set=latin2 -h mysql.top100.net.pl -u user01 -p -e baza01 > baza01.sql


UWAGA: Jeżeli korzystasz z programu mysqldump pakietu MySQL Server 4.0, w opcji --default-character-set nie możesz użyć wartości utf8!

Jeżeli spróbujesz użyć wartości utf8, otrzymasz poniższy komunikat błędu:
mysqldump: Character set 'utf8' is not a compiled character set and is not specified in the [...] file



UWAGA:
Jeżeli korzystasz z programu mysqldump pakietu MySQL Server 4.0, lub zainstalowałeś pakiet MySQL Server w innym katalogu niż domyślnie zaproponowany przez Instalatora, do polecenia mysqldump musisz dodać dodatkową opcję --character-sets-dir, np.:

jeżeli zainstalowałeś pakiet MySQL Server w folderze d:\serwery\mysql 4.0, pełne polecenie mysqldump będzie wyglądać następująco:
mysqldump --character-sets-dir="d:\serwery\mysql 4.0\share\charsets" --default-character-set=latin2 -h adres_serwera_bazy_danych -u nazwa_użytkownika -p -e nazwa_bazy_danych > nazwa_bazy_danych.sql

Jeżeli nie dodasz tej wartości, lub podana wartość będzie nieprawidłowa, otrzymasz poniższy komunikat błędu:
mysqldump: Character set 'latin2' is not a compiled character set and is not specified in the [...] file


gdzie:
adres_serwera_bazy_danych = adres serwera MySQL źródłowej bazy danych
nazwa_użytkownika = nazwa użytkownika MySQL źródłowej bazy danych
nazwa_bazy_danych = nazwa źródłowej bazy danych

5. Wciśnij Enter.

Po bliżej nieokreślonym czasie proces eksportu źródłowej bazy danych zostanie ukończony.

Jeżeli nie wyświetli się żaden tekst, znaczy to, że proces eksportu bazy danych został ukończony pomyślnie.

Jeżeli wyświetli się jakiś tekst, będzie to najpewniej komunikat błędu. W takim wypadku...

Dysponujesz teraz bazą danych w formie pliku .sql. Trzeba go teraz zaimportować do docelowego serwera. Aby to zrobić, należy wpierw usunąć wszystkie tabele z docelowej bazy danych.



KROK 3: Utworzenie kopii zapasowej docelowej bazy danych (na wszelki wypadek) - trzeba wyeksportować zawartość docelowej bazy danych do pliku tekstowego.

Jeżeli coś pójdzie nie tak, przynajmniej będzie można przywrócić poprzednią zawartość docelowej bazy danych.

Aby wyeksportować bieżącą zawartość docelowej bazy danych, wpisz następujące polecenie w wierszu poleceń (w czarnym okienku):
mysqldump --default-character-set=kodowanie -h adres_serwera_bazy_danych -u nazwa_użytkownika -p nazwa_bazy_danych > nazwa_bazy_danych_kopia.sql

gdzie:
kodowanie = kodowanie docelowej bazy danych (ustalone w kroku 1)
adres_serwera_bazy_danych = adres serwera MySQL docelowej bazy danych
nazwa_użytkownika = nazwa użytkownika MySQL docelowej bazy danych
nazwa_bazy_danych = nazwa docelowej bazy danych

przykładowo (serwer: mysql.top100.net.pl, nazwa bazy: baza01, nazwa użytkownika: user01, kodowanie: latin2):
mysqldump --default-character-set=latin2 -h mysql.top100.net.pl -u user01 -p baza01 > baza01_kopia.sql

Jeżeli nie wyświetli się żaden tekst, znaczy to, że proces przygotowania kopii zapasowej docelowej bazy danych został ukończony pomyślnie.

Jeżeli wyświetli się jakiś tekst, będzie to najpewniej komunikat błędu. W takim wypadku...

Masz teraz gotową kopię zapasową (backup) docelowej bazy danych. Jeżeli z jakiegoś powodu zajdzie potrzeba przywrócenia poprzedniej zawartości docelowej bazy danych (np. ponieważ import zrzutu bazy danych nie powiedzie się), będziesz mógł skorzystać z tej kopii.


KROK 4: Wyczyszczenie docelowej bazy danych - przed zaimportowaniem przygotowanego uprzednio zrzutu bazy danych (plik .sql), trzeba usunąć całą bieżącą zawartość docelowej bazy danych. Bez tego, podczas importu mogą pojawić się błędy, które przerwą ten proces.

Aby wyczyścić bieżącą zawartość docelowej bazy danych...
1. Wejdź do phpMyAdmina docelowej bazy danych (jeżeli nie znasz adresu, zapytaj naszego Administratora)

2. W ramce po lewej stronie wybierz docelową bazę danych

3. W ramce po prawej stronie zjedź na sam dół i kliknij na Zaznacz wszystkie

4. Następnie z rozwijanej listy po prawej stronie (ma wartość: Zaznaczone) wybierz Usuń

5. Zostanie wyświetlona lista tabel, które zostaną usunięte. Potwierdź, klikając na Tak

Jeżeli wyświetli się jakiś tekst (bodaj na czerwono), będzie to najpewniej komunikat błędu. W takim wypadku...

Baza danych jest już czysta, można do niej bez obaw importować bazę danych.


KROK 5: Import do docelowej bazy danych - ostatni krok, import zrzutu źródłowej bazy danych (pliku .sql) do docelowej bazy danych

Teraz pora wykonać import bazy danych, z przygotowanego uprzednio pliku.

Aby to zrobić, wpisz następujące polecenie w wierszu poleceń (w czarnym okienku):
mysql -h adres_serwera_bazy_danych -u nazwa_użytkownika -p nazwa_bazy_danych < nazwa_bazy_danych.sql

gdzie:
adres_serwera_bazy_danych = adres serwera MySQL docelowej bazy danych
nazwa_użytkownika = nazwa użytkownika MySQL docelowej bazy danych
nazwa_bazy_danych = nazwa docelowej bazy danych

przykładowo (serwer: mysql.top100.net.pl, nazwa bazy: baza01, nazwa użytkownika: user01, plik zrzutu bazy danych: baza01.sql):
mysql -h mysql.top100.net.pl -u user01 -p baza01 < baza01.sql

i wciśnij Enter.

Rozpocznie się proces importu bazy danych.

Jeżeli proces ten zostanie ukończony pomyślnie, nie wyświetli się żaden komunikat.

Jeżeli wyświetli się jakiś tekst, będzie to najpewniej komunikat błędu. W takim wypadku...

KONIEC: Baza danych została przeniesiona.
Inne Tematy w tej Kategorii
document Jak przetestować połączenie z serwerem pocztowym POP3?
document Jak przetestować szyfrowane połączenie z serwerem pocztowym POP3?
document Jak prawidłowo pisać zgłoszenie problemu do pomocy technicznej AMM?
document Diagnozowanie problemów z odbieraniem poczty w programie Microsoft Outlook Express (POP3)



RSS