]]>

Migracja bazy danych MySQL Magento

2011-06-10 01:22 przez administrator

Podczas migracji bazy danych Magento na różne serwery MySQL, możesz natknąć się na kilka problemów, które uniemożliwią Ci uruchomienie sklepu na nowym serwerze. Pokażemy jak rozwiązać te najczęściej spotykane oraz uniknąć innych wykonując poprawnie backup bazy danych.

 

Tworzenie backupu

Jeśli mamy dostęp do konsoli serwera najlepszą metodą na stworzenie backupu jest wykonanie go z linii poleceń:

mysqldump -h [host] -u [user] -p[hasło] [nazwa_bazy] --default-character-set=utf8 > magento-backup.sql

Jeśli nie mamy dostępu do konsoli możemy się także udać do panelu zarządzania.
System → Narzędzia → Kopie zapasowe Utworzony backup znajdziemy w katalogu /var/backups/

Przywracanie backupu

konsola:

mysql -h [host] -u [user] -p[hasło] [nazwa_bazy] --default-character-set=utf8 < magento-backup.sql

Problemy przy imporcie:

MySQL zwrócił komunikat:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE, KEY `FK_ATTRIBUTE_VARCHAR_ENTITY` (`entity_id`), KEY `FK_CATALO' at line 9

Problem wynika z różnic wersji serwerów MySQL serwera źródłowego i docelowego.
Z dokumentacji MySQL dowiemy się, iż przed wersją 5.1.10 polecenie USING używane było w składni wyłacznie przed listowaniem indeksu kolumny. Wraz z wersją 5.1.10 preferowana pozycja znajduje się za listowaniem kolumny. Używanie tego polecenia na pozycji przed listowaniem kolumny nie będzie więc już rozpoznawane w składni przez kolejne wersje MySQL.
Część polecenia SQL ‘USING BTREE’ znajduje się w złym miejscu. Aby rozwiązać problem należy edytować plik SQL, odnaleźć linijkę:

UNIQUE KEY `IDX_BASE` (`entity_type_id`,`entity_id`,`attribute_id`,`store_id`) USING BTREE,

I zamienić ją na:

UNIQUE KEY `IDX_BASE` USING BTREE (`entity_type_id`,`entity_id`,`attribute_id`,`store_id`),

Inny przykładowy problem, który możemy napotkać wygląda następująco:

ERROR 1452 (23000) at line 563784: Cannot add or update a child row: a foreign key constraint fails (`mag-planetnails/#sql-657e_709`, CONSTRAINT `FK_EAV _ENTITY_ATTRIBUTE_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `eav_attribute` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE)

Prawdopodobnie trafiliśmy na niego eksportując bazę Magento przez PhpMyAdmin w jakimś webhostingu. Możemy się go pozbyć w prosty sposób, na karcie exportu w PhpMyAdmin zaznacz opcję (Rys1.):


magic/pl/img/mysql-migracja.png

Rys1. Włączenie opcji w phpmyadmin.

 

Jeśli wraz ze zmianą serwera pojawiła się nowa domena www sklepu, należy pamiętać o uaktualnieniu adresu bazowego w bazie danych sklepu. Wpisy znajdują się w tabeli core_config_data w wierszach web/unsecure/base_url oraz web/secure/base_url.
Przy wersji Magento 1.5.x wystarczy wykonać następujące polecenia SQL:

update core_config_data set value='http://adres-sklepu.pl/' where config_id = '4';
update core_config_data set value='http:// adres-sklepu.pl /' where config_id = '5';

Przy innych wersjach Magento numery config_id mogą się różnić.

Wróć

Zobacz również