Te invitam sa te inregistrezi pe forum, daca nu esti deja membru in Invatam.Net
...
Invatam.Net este unul dintre cele mai noi forum-uri de web design si dezvoltare
din Romania. Vei gasi aici tutoriale, articole unicat si o comunitate prietenoasa.
Daca esti incepator sau avansat iti vei gasi locul alaturi de alti pasionati
de design. Poti discuta despre diferite aspecte ale activitatii tale, cere informatii,
schimba links sau mesaje de forum, posta anunturi si descarca fisiere exclusive
pentru Invata.Net si Wtricks.com
Acum ceva timp a trebuit sa combin womenonlyforums.com cu un alt forum similar si am avut o serie de probleme. Tocmai de aceea consider ca este un tutorial potrivit, care sa va ofere cateva secrete
Ce inteleg eu prin a "lipi" sau combina 2 forum-uri? Inseamna a importa utilizatorii, categoriile si mesajele dintr-un forum in cel final. Suna usor ... din pacate nu este asa ...
Primul lucru de care trebuie sa avem grija este baza de date. Pentru a face aceasta miscare, trebuie sa aveti un script care "lipeste" cele doua baze de date plus cele 2 baze de date ce se vor combina.
IMPORTANT!!!!!!!
Nu faceti acest import pe un forum functional. Va trebuie un forum de TEST. Mi-a luat 5 zile (peste 50 de ore de munca efectiva) sa lipesc doua forum-uri ... au fost multe erori si in acest timp comunitatile nu ar fi fost utilizabile.
Asa ...
Primul pas: va trebuie un SQL DUMP (un backup de baza de date de la forum-ul care se va lipi de cel final). Cereti celuilalt administrator (daca nu este forum-ul vostru) sa va trimita un backup de baza de date. Este o idee buna ca forum-ul in cauza sa fie inchis din acest moment pentru ca nu veti mai avea nevoie de o alta baza de date.
Instalati un nou forum bazat pe forum-ul FINAL.
In cazul meu am avut womenonlyforums.com ca si forum oficial si am creat un forum duplicat al lui pe womenonlyforums.com/test
Faceti un back up al bazei de date a forum-ului (lasati-l functional pana terminati testele) ... ar putea lua ore sau zile sa mutati un forum in celalalt, e pacat sa pierdeti timpul membrilor. Vom folosi acest backup de baza de date pentru a face toate testele necesare combinarii.
Domeniu si hosting GRATIS pentru situl tau Nu trimiteti PM pentru a primi ajutor cu siturile. Exista forum pentru asta.
Postarea de articole FURATE de pe alte situri pe forum se "rasplateste" cu 20% warning pe FIECARE articol. Scrieti articole ORIGINALE sau abtineti-va. Merci
1. baza de date principala (cea care va include cealalta baza de date).
2. baza de date care se va importa
3. script-ul
4. cateva topic-uri care sa ne ajute mai mult.
1. baza de date principala trebuie sa fie setata si sa aiba informatia importata. Dupa cum am mentionat deja, aceasta baza de date este un back-up a celei "oficiale" si va fi folosita pe forum-ul de test. In acest mod puteti sa rulati script-ul de import si sa studiati rezultatele.
2. baza de date primita de la celalalt administrator (sau cea secundara). Aceasta se va folosi doar pentru a transfera informatie in baza de date principala, dar vom mai lucra pe ea pentru a o face compatibila cu cea principala.
Acesta este script-ul care se va folosi. Copiati codul pe o pagina goala notebook si salvati ca merge_phpbb.php (observati ca exista un "s" la finalul link-ului, dar el este acolo pentru ca altfel am executa script-ul de ficare data cand am vizita situl si am "distruge" situl in cauza sau am vedea erori.
Script-ul se va salva in extensia .php pentru ca asa ne este necesar.
FOARTE IMPORTANT ... trebuie sa faceti cateva modificari in script
// Name and prefix for the database that should keep the original IDs
$dbname1 = 'database1';
$table_prefix1 = '';
// Name and prefix for the database that is going to be added
// to DB1.
$dbname2 = 'database2';
$table_prefix2 = 'phpbb_';
Acesta este codul ce trebuie modificat:
Ca root path puteti avea test in loc de phpBB (sau cum se numeste folder-ul in care testati importul). Daca lucrati pe directorul principal veti avea:
Code:
$phpbb_root_path = '';
Database host este localhost aproape de fiecare data. Trebuie sa aveti ambele baze de date pe acelasi host.
AMBELE baze de date trebuie sa aiba ACELASI USER NAME. dbuser trebuie sa fie acelasi in ambele cazuri. (Daca aveti 2 utilizatori separati la bazele de date, vor aparea erori). Pentru a le face pe ambele sa aiba acelasi user, creati un nou user in cPanel (cu nume si parola pentru prima baza de date) si dati-i prerogative si pentru a doua.
Domeniu si hosting GRATIS pentru situl tau Nu trimiteti PM pentru a primi ajutor cu siturile. Exista forum pentru asta.
Postarea de articole FURATE de pe alte situri pe forum se "rasplateste" cu 20% warning pe FIECARE articol. Scrieti articole ORIGINALE sau abtineti-va. Merci
SQL Error : 1054 Unknown column 'user_dollar' in 'field list'
Acesta este un exemplu de eroare care ar putea aparea. Inseamna ca in prima baza de date avem o coloana (user_dollar) (probabil de la cash mod) care nu are corespondent in a doua baza de date.
Este frustrant la inceput .. dar vor mai fi si altele ...
Va trebui sa adaugati coloanele (care dau asemenea erori) in a doua baza de date. Am avut multe hacks instalate pe primul forum (womenonlyforums.com) care nu erau instalate in celalalt. Asta a insemnat multe comenzi SQL de adaugat.
In exemplul de mai sus am o coloana care nu apare in baza de date secundara. Cum sa o adaugam?
1. EXPORT pentru user_dollar ... Vom exporta de fapt TABELUL phpbb_users (usor de vazut .. user_dollar este coloana in phpbb_users) ...
Cam asa arata pe womenonlyforums.com tabelul phpbb_users
Daca va uitati cu atentie, veti vedea ca am:
Code:
`user_dollars` decimal(11,1) NOT NULL default '0.0',
Trebuie sa adaug aceasta informatie in a doua baza de date prin urmatorul cod:
Code:
ALTER TABLE phpbb_users ADD user_dollars DECIMAL(11,1) UNSIGNED DEFAULT '0.0' NOT NULL;
Va trebui sa facem la fel cu toate coloanele care nu apar in baza de date secundara (comparati tabelele si copiati coloanele care nu apar).
Codul de mai sus este simplu de adaugat: ALTER TABLE inseamna ca doresc sa modific tabelul. In cazul nostru este phpbb_users. Apoi "spunem" bazei de date ce coloana sa insereze: ADD user_dollar si folosim informatia din export: decimal etc.
Faceti la fel pentru toate coloanele care nu sunt la fel. Iata ca exemplu cum a aratat comanda de SQL pe care am facut-o pentru toate coloanele lipsa:
Code:
ALTER TABLE phpbb_users ADD user_realname VARCHAR(25) NOT NULL;
ALTER TABLE phpbb_users ADD user_gender TINYINT(1) UNSIGNED DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_users ADD user_birthday VARCHAR(8) DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_users ADD user_last_birthday INT(11) UNSIGNED DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_users ADD user_home_phone VARCHAR(20);
ALTER TABLE phpbb_users ADD user_home_fax VARCHAR(20);
ALTER TABLE phpbb_users ADD user_work_phone VARCHAR(20);
ALTER TABLE phpbb_users ADD user_work_fax VARCHAR(20);
ALTER TABLE phpbb_users ADD user_cellular VARCHAR(20);
ALTER TABLE phpbb_users ADD user_pager VARCHAR(20);
ALTER TABLE phpbb_users ADD user_summer_time TINYINT(1) UNSIGNED DEFAULT '0' NOT NULL;
ALTER TABLE phpbb_users ADD user_list_option VARCHAR(255);
ALTER TABLE phpbb_users ADD user_allow_email TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_allow_website TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_allow_messanger TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_allow_real TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_allow_sig TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewpm TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewwebsite TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewmessanger TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewreal TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewavatar TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewsig TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_viewimg TINYINT(1) DEFAULT '1' NOT NULL;
ALTER TABLE phpbb_users ADD user_buddy_friend_display TINYINT(1) DEFAULT '1';
ALTER TABLE phpbb_users ADD user_buddy_ignore_display TINYINT(1) DEFAULT '1';
ALTER TABLE phpbb_users ADD user_buddy_friend_of_display TINYINT(1) DEFAULT '1';
ALTER TABLE phpbb_users ADD user_buddy_ignored_by_display TINYINT(1) DEFAULT '1';
ALTER TABLE phpbb_users ADD user_watched_topics_per_page SMALLINT(3) DEFAULT '15';
ALTER TABLE phpbb_users ADD user_privmsgs_per_page SMALLINT(3) DEFAULT '5';
ALTER TABLE phpbb_topics ADD topic_icon TINYINT(2);
ALTER TABLE phpbb_posts ADD post_icon TINYINT(2);
ALTER TABLE phpbb_posts ADD INDEX (post_icon);
ACESTA ESTE UN EXEMPLU.
Trebuie sa intelegem urmatoarele:
1. unele baze de date nu sunt compatibile
2. coloanele care NU exista in a doua baza de date trebuie sa fie gasite in prima (se compara bazele de date) si adaugate
3. faceti o lista cu ele si cu comanda prin care le veti adauga pentru a le insera dupa ce ati importat baza a doua asa cum este. Organizati-va bine, se va intampla sa importati baza a doua de multe ori, este bine sa aveti spre final TOATE coloanele cu comenzi pe lista si sa le importati cu o singura comanda.
Domeniu si hosting GRATIS pentru situl tau Nu trimiteti PM pentru a primi ajutor cu siturile. Exista forum pentru asta.
Postarea de articole FURATE de pe alte situri pe forum se "rasplateste" cu 20% warning pe FIECARE articol. Scrieti articole ORIGINALE sau abtineti-va. Merci
SQL Error : 1062 Duplicate entry '16777215' for key 1
UPDATE politics_xmb2.phpbb_posts SET post_id = post_id + 8804672 + 4402336 WHERE post_id > 0
Acesta este un set de erori ce va aparea dupa ce rulati script-ul de mai multe ori. Ideea este ca script-ul adauga tabelele din a doua baza de date de fiecare data (chiar si cand da eroare). Dupa cateva importuri gresite de ID-uri, veti avea aceasta eroare.
Inainte de a vedea CUM rezolvam asta, hai sa vedem cum facem script-ul sa functioneze. Am precizat deja ca il luati de pe http://www.typo.nl/misc/merge_phpbb.phps ... plasati informatia in el (cele 2 baze de date trebuie sa fie pe acelasi host si cu acelasi user+parola). Salvati fisierul modificat ca phpbb_merge.php sau merge.php sau cum doriti sa ii ziceti.
Copiati prin FTP in directorul principal al forumului de test (in prima faza).
Am stabilit deja ca vom avea un forum de test (ati vazut cate erori apar) .. acest fisier phpbb_merge.php va fi plasat in directorul principal din forumul de test. Il activati scriind in browser adresa lui
Inapoi la eroarea noastra. Am facut o serie de import-uri esuate (este un forum de test, ne permitem asta) pentru a putea vedea care sunt coloanele lipsa si pentru a putea rula comenzile SQL necesare pentru a le crea. Dupa cateva rulari de script avem aceasta eroare pe care o putem rezolva astfel, in 2 moduri:
1. Reparam tabelele "stricate"
In cazul nostru am avut tabelul phpbb_posts cu erori. Vom crea un nou document si plasa urmatorul cod.
message_die(GENERAL_MESSAGE, '<table width="80%" class="forumline"><tr><td><font color="green">Auto increment update successful.</font><br /><br /><b>For security reasons, delete this file when you are finished</b></td><tr></table>');
?>
Il salvam ca fix.php si il urcam in directorul principal al forum-ului test, il rulam apoi.
message_die(GENERAL_MESSAGE, '<table width="80%" class="forumline"><tr><td><font color="green">Auto increment update successful.</font><br /><br /><b>For security reasons, delete this file when you are finished</b></td><tr></table>');
?>
message_die(GENERAL_MESSAGE, '<table width="80%" class="forumline"><tr><td><font color="green">Auto increment update successful.</font><br /><br /><b>For security reasons, delete this file when you are finished</b></td><tr></table>');
?>
message_die(GENERAL_MESSAGE, '<table width="80%" class="forumline"><tr><td><font color="green">Auto increment update successful.</font><br /><br /><b>For security reasons, delete this file when you are finished</b></td><tr></table>');
?>
Si pentru celelalte, va uitati in cod si modificati numele tabelelor si al coloanelor.
2. DROP DATABASE. Renuntam de tot la informatia din baza de date "stricata" si reimportam tabelele initiale prin SQL. Se vor adauga si comenzile din lista pentru coloane inexistente in a doua baza de date.
Domeniu si hosting GRATIS pentru situl tau Nu trimiteti PM pentru a primi ajutor cu siturile. Exista forum pentru asta.
Postarea de articole FURATE de pe alte situri pe forum se "rasplateste" cu 20% warning pe FIECARE articol. Scrieti articole ORIGINALE sau abtineti-va. Merci
Acestea sunt cateva exemple de erori care vor putea aparea. Exista si cele 2 subiecte in forumul phpBB care pot sa va ofere si mai multe informatii, plus ca puteti intreba aici daca exista alte probleme.
Hai sa recapitulam:
1. Pregatiti cele 2 baze de date.
2. Creati un forum de test (se poate si pune intr-un folder numit test), in timp ce forum-ul principal ramane deschis.
Discutati cu celalalt administrator sa inchida forum-ul ce se muta.
3. Creati 2 baze de date care sa aiba acelasi utilizator
Eu am avut de pilda women_test (baza de date principala pe forum-ul de test) si women_club (ca baza de date cu informatia ce trebuia importata)
4. Populati cele 2 baze de date (cea de test cu informatia de pe forum-ul principal, a doua cu informatia de pe forum-ul care se "lipeste")
5. Pregatiti script-ul (modificati informatia din prima parte pentru a se potrivi cu datele bazele de date existente)
6. Rulati phpbb_merge.php si observati primele erori. Exportati tabelele corespunzatoare si COMPARATI-le. Folositi comezi SQL pentru a adauga coloanele lipsa in baza de date secundara. Faceti o lista cu aceste comenzi, pentru a fi mai organizati.
7. Mai rulati script-ul (veti vedea ca unele erori nu mai apar, in timp ce apar altele noi). Pentru a rezolva acestea trebuie sa comparati cu atentie cele 2 baze de date si sa importati coloanele lipsa in a doua baza de date.
8. Faceti o recapitulare: .. DROP tables .. goliti toate informatiile din bazele de date, re-importati informatia "curata", inserati comenzile pe care vi le-ati plasat in lista pentru a include si coloanele lipsa din a doua baza de date si rulati din nou script-ul.
9. La rularea script-ului trebuie sa NU AVETI NICI O EROARE. Daca inca apare una (vreo coloana inexistenta sau altceva) rezolvati-o, si rulati din nou script-ul. GOLITI bazele de date din nou si luati-o de la capat cu importul de informatie si de coloane. Daca NU ati avut nici o eroare este momentul sa treceti la forumul real.
10. INCHIDETI FORUM-UL PRINCIPAL. Asta pentru a nu se posta in timpul importului de baza de date. Puteti anunta membrii ca vor fi cateva minute in care forum-ul nu va fi disponibil.
11. BACKUP pentru baza de date principala !!!!!
Nu uitati sa faceti asta. Daca apare vreo eroare, va fi compromisa. BACKUP !!!
12. Editati phpbb_merge.php cu datele noi. Asignati acelasi utilizator bazei de date secundare.
13. Verificati de 100 de ori. Daca apare o eroare o luati de la capat cu drop tables, import etc. Nu este sfarsit de lume, numai ca dureaza mult.
14. Copiati phpbb_merge.php in DIRECTORUL PRINCIPAL al forum-ului mare si activati-l.
15. Daca totul e OK veti observa mai multi utilizatori, mai multe mesaje si ceva categorii in plus.
ATI REUSIT !!!
Daca nu, veniti aici si spuneti ce nu a mers OK si va ajutam
Domeniu si hosting GRATIS pentru situl tau Nu trimiteti PM pentru a primi ajutor cu siturile. Exista forum pentru asta.
Postarea de articole FURATE de pe alte situri pe forum se "rasplateste" cu 20% warning pe FIECARE articol. Scrieti articole ORIGINALE sau abtineti-va. Merci