alkesz1718
21.08.2017, 21:45:20
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
22.08.2017, 15:12:52
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
22.08.2017, 16:42:56
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
22.08.2017, 16:51:32
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
23.08.2017, 18:24:33
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
24.08.2017, 06:23:55
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.