PDA

Zobacz pełną wersję : Migracja 1.5 do 2.5 - jcomment



Kinski
20-01-2014, 19:51
Ze względu na ustawienie serwera (home.pl - zbyt krótki czas na wykonanie skryptu) nie mogę wykonać kompletnej migracji. Na serwerze lokalnym również nie jest to możliwe - trwa masakrycznie długo (lub pojawiają się błędy). Zrezygnowałem z migracji contentu (ustawienia jupgrade), czyli ponad 7500 artykułów. Migracja z całą reszta - kategoriami, użytkownikami, linkami, komentarzami itd. kończy się powodzeniem.
Content postanowiłem wyeksportować i zaimportować pluginem j2xml. Trwa to długo, bo musiałem podzielić na paczki po 50 artykułów (maks. plik xml może mieć 9MB, inaczej wywala błędy - kwestia ustawień home.pl). Całość zajmuje ponad 900 MB. Na serwerze lokalnym nie mogę tej operacji przeprowadzić, bo pojawiają się błędy z cyklu "Fatal error: Maximum execution time of XX seconds exceeded" (co dziwniejsze - czasem można zaimportować paczkę z 500 artykułami ważącą 25 MB, a czasem nie można paczki z 50, ważącej 10 MB). Nawet mimo zmian w konfiguracji php (max_execution_time etc.).
Ok. Importuję content. Zostają komentarze (jcomment). Jak je zaimportować? Próbowałem zrobić to poprzez zmianę tabel w bazie danych, jednak zaimportowane artykuły mają inny ID (zmieniają się po migracji, mimo że w ustawieniach zachowuję Keep ID) i komentarze przypisywane są do nie tych artykułów co trzeba. Czy istnieje sposób na sprawdzenie które komentarze są przypisane do którego artykułu? Ewentualnie czy można wyeksportować komentarze (sp upgrade?) i zaimportować je do artykułu?

trzepiz
20-01-2014, 23:28
Poszukaj w google o migracji Jcomments z 1.5 do 2.5 - na pewno był jakiś opis jak to przenieść.

http://bit.ly/1eO6urb

Tor_
20-01-2014, 23:35
Dużo tych komentarzy? zmień ID na takie jakie powinno być jakimś programem do porównywania danych może WinMerge. Próbowałeś opcje po zalogowaniu do zaplecza -> wybierasz "Components-JComments-Data Import" nie działa ? .Cała migrację najlepiej przeprowadzić na dobrym lokalnym serwerze masz sporo większe możliwości ingerencji w ustawienia serwera

Kinski
21-01-2014, 17:15
http://bit.ly/1eO6urb
Część z tych linków znam. Próbowałem pierwszego sposobu. Efekt opisałem - komentarze trafiły nie do tych artykułów co trzeba.


Dużo tych komentarzy?
Jakieś 9000.


Próbowałeś opcje po zalogowaniu do zaplecza -> wybierasz "Components-JComments-Data Import" nie działa?
No właśnie komentarze migrują. Po migracji i zainstalowaniu jcomments są na liście.


Cała migrację najlepiej przeprowadzić na dobrym lokalnym serwerze masz sporo większe możliwości ingerencji w ustawienia serwera
Tak, tak "większe możliwości", wiem. Ale już pisałem:


"Fatal error: Maximum execution time of XX seconds exceeded" (co dziwniejsze - czasem można zaimportować paczkę z 500 artykułami ważącą 25 MB, a czasem nie można paczki z 50, ważącej 10 MB).

Serwer lokalny chodzi jak muł. Wolniej od tego na home.pl. Czasem można zaimportować paczkę 50 MB, a czasem nie można 5 MB.


zmień ID na takie jakie powinno być jakimś programem do porównywania danych może WinMerge
Spróbuję.

Kinski
23-01-2014, 03:40
Udało mi się przenieść plugin, jednak komentarze nie pojawiają się po kliknięciu w link. Na stronie pojawiają się linki "1 komentarz" czy "napisz komentarz", ale przenoszą do dalszej części artykułu. Po migracji w j 2.5 mam w module jcoments listę przeniesionych komentarzy, ale tylko część ma odniesienia do artykułów (Content item title). Próbowałem użyć skryptu, ale pojawia się błąd:

#1054 - Nieznana kolumna 'thread_id' w field list

zwiastun
23-01-2014, 12:04
Oznacza to, ze w bazie danych w tabeli komentarzy brakuje pola tak oznaczonego. Możliwe, ze coś da uzupełnienie tabeli.
Technika - instalujesz komentarze na czystej wersji Joomla i sprawdzasz strukturę tabel w bazie danych. Na podstawie porównania dodajesz brakujące pole.

Kinski
23-01-2014, 15:46
Sprawdziłem strukturę/kolumny w bazie - w j1.5 ani j 2.5 nie ma pola "thread_id". Można utworzyć dodatkowe pola, ale po co skoro będą one puste. Może lepiej usunąć z kodu ("thread_id")?




INSERT INTO
mydb_upgrade_j25.myprefix_jcomments
(
id, parent, thread_id, path, level, object_id, object_group, object_params, lang,
userid, name, username, email, homepage, title, comment, ip, date, isgood, ispoor,
published, subscribe, source, source_id, checked_out, checked_out_time, editor
)
SELECT
id, parent,
CASE WHEN SUBSTRING(path, LOCATE(',', path)+1, LOCATE(',', path, 2))='' THEN 0
ELSE SUBSTRING(path, LOCATE(',', path)+1, LOCATE(',', path, 2)) END AS thread_id,
path, level, object_id, object_group, object_params, lang,
userid, name, username, email, homepage, title, comment, ip, date, isgood, ispoor,
published, subscribe, source, source_id, checked_out, checked_out_time, editor
FROM
mydb_livecopy_j15.myprefix_jcomments;

Kinski
26-01-2014, 14:39
Problem chyba rozwiązany. Wydaje się, że sporo zależy od rodzaju komponentu, którego używamy do migracji i ustawień serwera. Ta sama procedura migracji zachowuje się inaczej. Próbowałem jupgrade + j2xml (pominięcie contentu ze względu na błąd Migrating undefined), jupgradepro (trzeba uważać - zacina się przy "trefnych" wpisach, a po odświeżeniu lub próbie ponownego użycia znika menu Komponenty z panelu admina -> wtedy Akeeba Backup, usuwanie trefnych wpisów i replay) i spupgrade (dodawał do niektórych aliasów swoje prefixy typu sp-349343). Powodzeniem zakończyło się użycie jupgradepro (Restfull, przy trybie Database zatrzymywał się przy przenoszeniu contentu po ok. minucie, czyli po czasie, kiedy zatrzymywane jest wykonywanie skryptu na home.pl -> opcja max_execution_time) + zastosowanie zmodyfikowanego skryptu (http://ogri.me/en/web-development/651-migrating-from-joomla-1-5-to-joomla-2-5-part-2-1-jdownloads-and-jcomments). Info może komuś się przyda.
Home.pl nie ma panelu phpMyAdmin (przynajmniej w tej opcji, której używam), który pozwalałby na zarządzanie bazami danych. Można się logować tylko do poszczególnej bazy i w niej przeprowadzać operacje. Nie da się chyba robić tego między bazami (bo wywala "access denied"). Więc problematyczne jest użycie powyższego skryptu. Zrobiłem to inaczej. Wyeksportowałem tabele jcomment z j1.5 i zaimportowałem je do bazy danych j2.5. Potem zmodyfikowałem skrypt.



-- --------------------------------------------------------------------------------
-- _jcomments
-- --------------------------------------------------------------------------------


INSERT INTO
baza-mysql-j25.prefix-j25_jcomments
(
id, parent, thread_id, path, level, object_id, object_group, object_params, lang,
userid, name, username, email, homepage, title, comment, ip, date, isgood, ispoor,
published, subscribe, source, source_id, checked_out, checked_out_time, editor
)
SELECT
id, parent,
CASE WHEN SUBSTRING(path, LOCATE(',', path)+1, LOCATE(',', path, 2))='' THEN 0
ELSE SUBSTRING(path, LOCATE(',', path)+1, LOCATE(',', path, 2)) END AS thread_id,
path, level, object_id, object_group, object_params, lang,
userid, name, username, email, homepage, title, comment, ip, date, isgood, ispoor,
published, subscribe, source, source_id, checked_out, checked_out_time, editor
FROM
baza-mysql-j25.jos_jcomments;
itd.

Komentarze się chyba zgadzają, mimo że na liście nie pojawia się info, do którego wpisu się odnoszą (Content item title). Można dodawać nowe i oceniać. Po takiej edycji (ocena, dodanie komentarza) na liście komentarzy pojawia się odnośnik do Content item title. Pewnie, gdybym miał większą wiedzę z zakresu mysql i joomli, poszłoby to o wiele sprawniej...
Tak czy inaczej dziękuję za pomoc.