Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szybka zmiana kodowania
alkesz1718
post 21.08.2017, 21:45:20
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Tomplus
post 22.08.2017, 15:12:52
Post #2





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
alkesz1718
post 22.08.2017, 16:42:56
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Tomplus
post 22.08.2017, 16:51:32
Post #4





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
alkesz1718
post 23.08.2017, 18:24:33
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 8.12.2014
Skąd: Czernina

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Tomplus
post 24.08.2017, 06:23:55
Post #6





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 06:54