Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2019-08-27 08:35:33

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Jak przenieść mariadb z polskimi znakami na nowy serwer ?

Jak przenieść bazy danych mariadb z polskimi znakami na nowy serwer.

Witam. Mam serwer z kilkoma stronami WWW korzystającymi z baz danych na mariaDB. Chcę je przenieść na nowa maszynę.

Zainstalowałem na nowej maszynie debiana z apache2, mariadb i php.

Przeniosłem pliki ze stroną oraz bazy danych lecz o ile polskie znaki na stronie pojawiają się poprawnie to dane z bazy danych po migracji wyświetlają krzaczki zamiast polskich znaków.

migrowałem w następujący sposób:

Kod:

mysqldump -u root -phasloroota bazydanych > bazydanych.sql

A następnie na nowym serwerze wgrywałem bazę tak:

Kod:

create database bazydanych DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql -u root -phasloroota bazydanych < bazydanych.sql

Gdzie mogę popełniać błąd ?

Próbowałem też dodać mimo że w oryginalnych plikach tego nie było dodatkowy kod na stronie

Kod:

$connect->query("SET NAMES 'utf8'");

Jakie polecenia wykonać aby zrobić backup a następnie odtworzyć na nowej maszynie bazy danych mariadb aby dane migrowały się i wyświetlały poprawnie polskie znaki ?

Ostatnio edytowany przez debiJan (2019-08-27 08:35:55)

Offline

 

#2  2019-08-27 08:41:19

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

Przecież Mariadb przy każdej bazie danych oznacza kodowanie danej bazy.
Nigdy z żadnym eksportem czy importem nie miałem problemu ani w Mysql ani w Mariadb.

Skąd i dokąd przenosisz te bazy, z hostingu na serwer dedykowany/vps, z hostingu na inny hosting, czy w jakiejś innej konfiguracji?

Zwłaszcza, ze obecnie wszystkie znane mi dystrybucje Linuxa czy BSD korzystają z UTF-8 i Mariadb po instalacji w nich też ma ustawione kodowanie na UTF-8.

Więc nie czaję dokładnie, jaki masz problem.

Debian 9, Mariadb:

Kod:

mysql  Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:        751
Current database:    
Current user:        root@localhost
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server:            MariaDB
Server version:        10.1.38-MariaDB-0+deb9u1 Debian 9.8
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:            2 days 14 hours 56 min 56 sec

Jak widać mariadb pilnuje kodowania klienta, kodowania serwera i kodowania połączenia.
I tak samo  było jeszcze w Mysql-4 i Mariadb-5 chyba z 6 czy 7 lat temu.

Właściwie w ogóle nie musisz zakładać baz, jak zrzuciłem ostatnio z jednego serwera wszystkie bazy, i wgrałem je na nowy świeży serwer, (razem z bazą mysql), to działały też konta użytkowników i hasła do baz po magicznej komendzie:

Kod:

flush privileges

żadne czary z kodowaniem nie były potrzebne.

Zrzut bazy na starym serwerze zrobiłem tak (z domu, zdalnie, nie na serwerze):

Kod:

mysqldump --ssl -h $SERVER  -u $DBUSER  -p$DBPASS --single-transaction  --all-databases |xz > $BACKUPDIR/mysqldb/all.sql.xz

a na nowym:

Kod:

cat all.sql.xz | unxz | mysql -u root -p$HASEŁKO

i wszystko śmiga, chociaż to była migracja ze starego CentOSa na nowszego Debiana, czyli była pewna przestrzeń czasowa miedzy wersjami Mariadb.

Pozdro

Ostatnio edytowany przez Jacekalex (2019-08-27 08:58:01)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2019-08-27 10:15:26

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

Hmm więc może to jakiś problem w konfiguracji apache na nowym serwerze. O czym powinienem tam pamiętać ?

Offline

 

#4  2019-08-27 10:21:26

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

kiedy natomiast próbuję zaimportować bazę bez jej wczesniejszego utworzenia poprostu wykonując polecnie

Kod:

mysql -u root -phaslo bazydanych < bazydanych.sql

dostaję komunikat o błędzie

Kod:

ERROR 1049 (42000): Unknown database 'bazydanych'

Offline

 

#5  2019-08-27 10:43:30

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

sprawdziłem na starym serwerze kodowanie znaków:

Kod:

SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

a na nowym

Kod:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

Jak to przenieść ?

Ostatnio edytowany przez debiJan (2019-08-27 10:44:34)

Offline

 

#6  2019-08-27 10:47:59

  loms - Użytkownik

loms
Użytkownik
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-07-20

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

morfik czy to Ty znowu?


KNOPPIX 8.6, Windows 7

Offline

 

#7  2019-08-27 10:57:55

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

No nie nie znam żadnego morfika.

Offline

 

#8  2019-08-27 11:06:03

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

Serwer Mysql z kodowaniem latin1?

Ten serwer jest chyba starszy od całego internetu?
już dobre 8 lat nie widziałem, żeby Mysql miał takie kodowanie.
Mariadb nigdy nie miał takiego kodowania w znanych mi dystrybucjach Linuxa,
a używam go od wersji 5.2, czyli jednej z pierwszych wersji pod nazwą Mariadb.

Co się tyczy konwertowania, to bazie wsio rawno, byle strony przeżyły, tu masz dokumentację Wordpressa:
https://codex.wordpress.org/Converting_Database_Character_Sets

Czyli coś w typie:

Kod:

mysqldump -u root -p --opt --quote-names --skip-set-charset --default-character-set=latin1 wordpress > wordpress.sql

Kod:

mysql -u root -p --default-character-set=utf8 wordpress < wordpress.sql

Tylko przeczytaj całego powyższego arta najpierw.

EDIT:
Tu masz jakiś kawałek bardzo starego wiki Gentoo na temat konwersji Mysql:
http://wikigentoo.ksiezyc.pl/TIP_Convert_latin1_to_UTF-8_in_MySQL.htm

Ewentualnie zobacz w konfiguracji Mariadb, czy można ją przestawić na latin1, czyli de facto cofnąć w rozwoju o 10 lat.

PS:

...
dostaję komunikat o błędzie


Kod:

ERROR 1049 (42000): Unknown database 'bazydanych'

Jeżeli nie kopiujesz bazy mysql. w której są dane baz i konta użytkowników, to naturalne, że bazy nie ma.
Wtedy musisz ją zakładać od zera.

Ostatnio edytowany przez Jacekalex (2019-08-27 11:28:45)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2019-08-27 12:18:58

  urbinek - Dzban Naczelny

urbinek
Dzban Naczelny
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

loms napisał(-a):

morfik czy to Ty znowu?

Jedynym z niewielu, którzy zadaja pytania  dupy jesteś ty ;)

Morfik pisze artykuły o takich rzeczach xD


A w wolnym czasie, robię noże :)
http://nginx.urbinek.eu/_photos/signature.png

Offline

 

#10  2019-08-27 20:29:03

  loms - Użytkownik

loms
Użytkownik
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-07-20

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

Wydaje mi się, że jest to nowe konto (jedno z co najmniej kilkudziesięciu) morfika. Morfik jest specjalistą i nie może o nic pytać z swojego konta.


KNOPPIX 8.6, Windows 7

Offline

 

#11  2019-08-27 20:33:33

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

@loms: o bana się starasz?

Tylko zaśmiecasz forum.

Offline

 

#12  2019-09-20 10:08:38

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

Dawno nie wchodziłem tutaj a widzę że nadal jestem podejrzewany o to że jestem morfikiem. Nie jestem . Jeśli morfik to czyta to czy mógł by oficjalnie sie wypowiedzieć bo nie wiem jak to miał bym udowodnić.

A skoro morfik pisze artykuł na ten temat to mógł by mi ktoś podlinkować go tutaj. Chętnie się zapoznam.

Offline

 

#13  2019-09-20 11:36:25

  debiJan - Użytkownik

debiJan
Użytkownik
Zarejestrowany: 2019-08-27

Re: Jak przenieść mariadb z polskimi znakami na nowy serwer ?

A tak w ogle moim rozwiązaniem było:
1. Zrobic dump bazy
mysqldump -u root -p******* --opt --quote-names --skip-set-charset --default-character-set=latin1 nazwabazy> nazwabazy.sql

2. Konwersja znaków
iconv -f ISO-8859-2 -t UTF-8  nazwabazy.sql >  nazwabazy.sql
perl -pi -w -e 's/CHARSET=latin1/CHARSET=utf8/g;'  nazwabazy.sql

3 Import bazy
mysql -u root -p******** --default-character-set=utf8 nazwabazy < nazwabazy.sql


Po tych operacja wszystko działa jak chciałem.

Pozdrawiam.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)