Szukaj na tym blogu

Polskie znaczki w MYSQL

Cały problem odnosi się do kodowania - ale kto to może wiedzieć, trzeba zagłębić się w temat i choć troszkę poszperać. Opisuję tutaj mój problem czy problem z kodowaniem bazy mysql na serwerze VPS- czyli ja mam możliwość dostępu do shella (konsoli) serwera - czyli mogę samodzielnie np restartować usługi działające na serwerze. Co to jest shell i usługi - no cóż za dużo by się tutaj rozpisywać...
Typowy laik - taki jak ja, cieszy się z każdego sukcesu informatycznego (tak to nazwę) i jeśli ma przed sobą zrobienie kopii bazy danych i jej odtworzenie to cieszy się jeśli się to uda.

Zrobienie kopii bazy danych:
mysqldump -uroot -p nazwabazy > nazwabazy.sql
Odtworzenie bazy danych:
mysql -uroot -p nazwabazy < nazwabazy.sql

Zrobiłem, udało się ufffffff jestem szczęśliwy.
Po kilku chwilach sprawdzam jak działa sklep - i co i jaja. W niektórych opisach brak polskich znaków - jest tylko "ó" z polskich ogonków. I teraz co robić?

Rozwiązanie jest następujące:
Przed wgraniem kopii bazy danych należy bezwzględnie sprawdzić z jakim kodowaniem baza została zainstalowana.
Jak to sprawdzić, ano tak:

  1. logujemy się poprzez ssh na serwer: najlepiej przez putty
  2. logujemy się do bazy danych: mysql -u root -p
  3. wykonujemy polecenie: show variables like 'char%';
  4. dostajemy listing na ekranie w postaci tabelki i informacji o kodowaniu bazy danych. 
Aby polskie znaczki wyświetlane były poprawnie wszędzie musi być napisane UTF8 - jeśłi tak nie jest to lipa - polskich znaczków nie będzie - oczywiście pewnie zobaczycie kodowanie Latin1 - to chyba domyślne kodowanie z jakim instalowana jest baza danych mysql.
Teraz pytanie jak to nareperować, ano ja zrobiłem to w następujący sposób:
  1. znalazłem plik my.cnf - /etc/mysql/my.cnf  - to plik konfiguracyjny bazy danych mysql
  2. w pliku nie było śladu o jakiejkolwiek konfiguracji kodowania więc dopisałem tam ręcznie
    [client]
    default-character-set = utf8
    
    [mysqld]
    collation_server = utf8_general_ci
    character_set_server = utf8
    
    [mysqldump]
    default-character-set = utf8
    
    [mysql]
    default-character-set = utf8 
Następnie zrestartowałem serwer mysq: poleceniem /etc/init.d/mysqld restart.
Polskie znaczki wróciły do normy.





Pisząc ten post korzystałem z pomocy, a dokładnie ze strony: http://winhelp.jogger.pl/2011/02/17/polskie-znaki-utf-8-i-mysql-co-mi-pomoglo/

Brak komentarzy:

Prześlij komentarz