Skocz do zawartości
Matjas

Przenoszenie bazy danych

Polecane posty

Mam problem, przenoszę bazę MySQL z kodowaniem latin2_general_ci. System porównań dla połączenia MySQL to utf8_unicode_ci. Za każdym razem gdy importuję bazę zamiast polskich znaków pojawiają się krzaki. Na nowym serwerze system porównań jest ten sam. Przy importowaniu zaznaczam kodowanie latin2. Męczę się z tym już jakiś czas i nie wiem czemu tak się dzieje. Co powinienem zrobić aby polskie znaki pojawiały się prawidłowo?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Spróbuj przy połączeniu z bazą danych dodać coś takiego:

 

mysql_query("SET names latin2");

 

Na ogół pomagało zawsze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Po zrobieniu zrzutu zobacz jakie masz kodowanie albo bedzie UTF8 (2 kszakory zamiast jednego polskiego :P albo latin2 (też latwo rozpoznać) następnie dodaj do zrzutu po use baza_danych

set names utf8;

 

i dalej importuj normalnie czyli

mysql -uuser -p baza <plik.sql

Raczej do tych 2 systemów kodowania znaków (tudzież jeszce w gre wchodzi win1250, wystarczy reczne sprawdzenie).

Zamiast dopisywania set names mozesz sobie poszukac jakis przelaczniy w stylu --set-charset czy cos podobnego w wywolaniu mysql -uuser....

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dalej średnio rozumiem :P zrzut mam na dysku, dostałem od znajomego bo dla niego to robię. Wrzucam normalnie przez phpmyadmina. Jak wrzucałem na jeden ze swoich serwerów wszystko działało dobrze, ale u niego zawsze krzaczy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Znając dokładnie kodowanie pliku możesz użyć iconv do konwertowania na docelowe kodowanie - potem replace collation jeśli trzeba.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość

ale sprawdź dokładnie, gżegżółką - ileż to ja razy miałem w phpmyadminie latin2, w pliku niby set names latin 2, a potem wychodziły jakieś dziwne historie : )

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Pisałem przecież, że latin2

Nie wazne jak masz zdefiniowane kodowanie ;] chodzi o kodowanie danych czyli napisów tekstow ktore rownie dobrze (i czesto tak jest )jest w UTF8 mimo ze masz baze w latin2 bo zrzut se akurat w utf8 zrobil ;) albo jest w latin2 ale tak czy inaczej set names latin2 trzeba dopisac. Po prostu odpal w edytorze jakims i poszukaj napisów (z polskimi literami) :)

I nic nie tzreba konwertowac set names po prostu mowi jakie ma w danej chwili kodowanie uzyc i jak bedzie zgodne z rzeczywistym kodowaniem pliku to bedzie ok. Pozniej bedzie dzialac jako latin2.

Jedynym wyjatkiem jets to jesli zrzut jest uwalony w latin1 izamiast polskich znakow sa ? wtedy nic nie poradzisz po za recznym poprawianiem .

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dobra, nie wiedziałem, że aż tak się na tym nie znam ;) Sprawdziłem gżegżółką i wyszło Kodowanie: Unicode UTF-8. Trochę to dziwne bo pod każdą tabelą pisze DEFAULT CHARSET=latin2;. No ale ok, co mam teraz z tym zrobić? Tak dla kompletnego laika

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość

zdecyduj się na jedno kodowanie i upewnij, że wszędzie takie jest... może ten latin2 jednak

gżegżółką skonwertuj plik bazy do latin2/iso-8859-2 a potem wrzuć to do bazy właśnie jako takie - jeśli skrypty nie mają jakiegoś chorego kodowania gdzieś poustawianego, to powinno być bombowo

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dobra, nie wiedziałem, że aż tak się na tym nie znam ;) Sprawdziłem gżegżółką i wyszło Kodowanie: Unicode UTF-8. Trochę to dziwne bo pod każdą tabelą pisze DEFAULT CHARSET=latin2;. No ale ok, co mam teraz z tym zrobić? Tak dla kompletnego laika

 

Jako utf się importuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przekonwertowałem gżegżółką na iso-8859-2, teraz jak otworze bazę w notepad++ to ładnie widać polskie znaki, jednak jak wrzucam dalej nie działa. Jak wrzucam bazę i dam zestaw znaków dla pliku na utf8, to wygląda to tak, że niektóre znaki są, niektóre nie np. strona g?ówna, a jak dam latin2 to są same znaki ? zamiast polskich.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Przekonwertowałem gżegżółką na iso-8859-2, teraz jak otworze bazę w notepad++ to ładnie widać polskie znaki, jednak jak wrzucam dalej nie działa. Jak wrzucam bazę i dam zestaw znaków dla pliku na utf8, to wygląda to tak, że niektóre znaki są, niektóre nie np. strona g?ówna, a jak dam latin2 to są same znaki ? zamiast polskich.

 

Jak już wrzucisz jako utf to w skrypcie dodaj po połączeniu komendę do mysql set names latin2 - tak jak ktoś wcześniej pisał.

 

Tu masz więcej info:

http://wiki.prohost.pl/index.php?title=Kod...e_Mysql#Skrypty

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość

notepad++ w środowisku tak wychwalany, IMO to syf, który kaszani kodowanie.. nic nie kombinuj, po konwersji wrzuć plik przez phpmyadmina, ew. zrób jak Prohost dopisał heh

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Przekonwertowałem gżegżółką na iso-8859-2, teraz jak otworze bazę w notepad++ to ładnie widać

Nic nie musisz przekonwertowywac!

 

Po prostu zrzut jest w UTF starczy dodac set names utf8 w pliku SQL i

zrobic mysql -uuser -p baza < plik.sql i tyle bedzie wszystko ok.

set names ustawia bieżące kodowanie (polaczenia) i skoro masz plik w UTF (bo zrzut w phpmyadminie zwykle jest w UTF chyba ze inaczej ustawisz) to dane zostana wlasciwie wgrane (nie zostana uszkodzone) a baza sobie zinterpretuje przy zapisie do latin2 bo tak jest ustawiona.

 

Oczywiscie jak zmieniles kodowanie to ustaw set names latin2 (rownez w pliku ) lub tez mozesz sobie wejsc do konsoli mysql ustawic set names iposzukac magicznego " / " sluzacego do importu j atam nigdy nie pamietam ktory to ;]

 

Nie trzeba także żadnych iconv etc ;]

 

No i przez phpmyadmina import bardzo dużej bazy jest nierealny lub malo wydajny ;) za to eksport przyjemny.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak poedytuj sobie .sql... ;) Edytując łatwo popsuć kodowanie pliku jak się nie wie co się robi i czym.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Tak poedytuj sobie .sql... ;) Edytując łatwo popsuć kodowanie pliku jak się nie wie co się robi i czym.

Ojejku bez przesady SQL binarny nie jest ;] Dodanie na poczatku jednej linii racej az tak trudne nie jest (chyb alatwiejsze niz konwersja pliku, ktora tez moze ni pomoc :) a edytor dla przecietnego admina tez by sie znalazl np.: mcedit, vi, scite, eclipse

 

Mozna by tez poeksperymentowac z opcjami mysqldump czy tez mysql ale spoko mozna wszytsko wynac na kilkanascie roznych sposobow. Wazne aby sie udalo .

 

Lub tez jak pisalem:

mysql -uuser -p baza

set names KODOWANIE_pliku

\. sciezka_do_pliku.sql

 

Choc w sumie tak nie probowalem ale powinno byc ok :)

 

z mojej strony EOT bo ile mozna napisac postow o tak prozaicznej czynnosci jak import bazy danych :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×