Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szybka zmiana kodowania
Forum PHP.pl > Forum > Bazy danych > MySQL
alkesz1718
Witam,
Jako to że od niedawna zacząłem uczyć się z MySQL to chciałbym się dowiedzieć jak w łatwy i szybki sposób zmienić kodowanie całej bazy danych.
Przykładowo mam pewną bazę danych z kodowaniem latin2_general_ci (ISO-8859-2) oczywiście rzadko już jest to kodowanie stosowane i większość przechodzi na UTF-8
Wiem że można ręcznie to robić ale komu by się chciało zmieniać kolumny jak i ich strukturę po kolei a w dodatku mogą wystąpić przy tym krzaczki.
Stosowałem już metodę typu eksportowanie bazy i edycja pliku sql przez notepad++ zmienianie masowo danych słów z iso i latin2 na utf8 po czym tym samym programem zmienienie kodowania pliku na utf8.
Nie powiem ten sposób działa mimo występującego błędu podczas importu (niby że nie dało rady wgrać bazy ale po odświeżeniu i tak się wszystko wgrało jak należy)

Ale chciałbym znać jakiś inny (i zapewne bardziej profesjonalny) sposób na zmianę kodowania całej bazy danych tak aby po zmianie kodowania nie występowały krzaczki

PS. Kodowanie samej strony to ogarnąłem już dawno temu ale zawsze mnie irytuje że jak zmienię kodowanie strony na utf a potem bazę to czasami pojawiają się krzaki
Tomplus
Powiem Ci jak ja to zrobiłem. MIałem dokładnie taki sam problem.
Rozwiązaniem było:

1. otwarcie połączenia ze starym kodowaniem
2. utworzenie rekordów UPDATE
3. zapis do bazy ALE na drugim połączeniu z nowym kodowaniu.

Czyli potrzebne są dwa połączenia:
- ISO, odczyt
- UTF, zapis.
alkesz1718
Ujmę to tak nie za bardzo mi odpowiada łączenie w systemie 2 kodowań... dosyć często są aktualizacje do systemu przez co za każdym razem trzeba by było zmieniać pliki... Chodzi mi o to by za jednym zamachem zmienić raz na zawsze prawidłowo całe kodowanie bazy danych. Na razie mój sposób jest dobry na małe bazy ale jak mi przyjdzie zmienić kodowanie dużej bazy danych to lepiej było by mi zmienić jakimś prostym zapytaniem W BAZIE niż łączyć stare kodowanie z nowym...

Dlatego się pytam czy jest coś takiego bo wgrywanie dużej bazy danych z powrotem z nowym kodowaniem może zająć nawet kilka godzin
Tomplus
Nie, nie... robisz to raz.

Raz wykonujesz taki update. Dzięki czemu masz na czysto poprawne kodowanie w bazie, potem możesz odpytywać bazę z kodowaniem UTF8
alkesz1718
Aaaa dobra myślałem że chodziło by w systemie to zrobić...
Powiem tak takim sposobem też robiłem i większość bazy dała się zaktualizować do nowego kodowania ale część bazy miała problemy z zmianą kodowania w strukturach, nie pamiętam jaki to był konkretnie błąd bo było to dość dawno i wtedy w bazie pozmieniały się polskie znaki na znaki zapytania a jako że uwierzyłem że właściciel bazy ma kopię zapasową to nie robiłem własnej...

Tu też chciałbym w przyszłości uniknąć takich niespodzianek przy zmianie kodowania
Tomplus
Dlatego ja tworzę nowe tabele, a potem - dodaje prefiksy do starych tabel np. _old a nowym usuwam prefixy np. _new.
Ja nie miałem żadnych problemów. Oczyście tylko wtedy gdy nowa tablica ma kolumny poprawnie stworzone, a nie Latin czy Windows
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.