#1 Merging forum DB's
Posted: Wed Jul 20, 2005 12:27 pm
Okey, this is directed to anyone with database experiance(KAN, I guess I'm looking at you), how hard would it be to merge two/three differant forums?
Fantasy Gaming, SciFi and Irreverence
http://libriumarcana.games/phpBB3/
To be frank, I ain't familiar with PHPBB database, so the questions are:Ace Pace wrote:Okey, this is directed to anyone with database experiance(KAN, I guess I'm looking at you), how hard would it be to merge two/three differant forums?
Code: Select all
CREATE TABLE phpbb_auth_access(
group_id mediumint(8) NOT NULL,
forum_id smallint(5) unsigned NOT NULL,
auth_view tinyint(1) NOT NULL,
auth_read tinyint(1) NOT NULL,
auth_post tinyint(1) NOT NULL,
auth_reply tinyint(1) NOT NULL,
auth_edit tinyint(1) NOT NULL,
auth_delete tinyint(1) NOT NULL,
auth_sticky tinyint(1) NOT NULL,
auth_announce tinyint(1) NOT NULL,
auth_vote tinyint(1) NOT NULL,
auth_pollcreate tinyint(1) NOT NULL,
auth_attachments tinyint(1) NOT NULL,
auth_mod tinyint(1) NOT NULL,
KEY group_id (group_id),
KEY forum_id (forum_id)
);
CREATE TABLE phpbb_banlist(
ban_id mediumint(8) unsigned NOT NULL auto_increment,
ban_userid mediumint(8) NOT NULL,
ban_ip varchar(8) NOT NULL,
ban_email varchar(255),
PRIMARY KEY (ban_id),
KEY ban_ip_user_id (ban_ip, ban_userid)
);
CREATE TABLE phpbb_categories(
cat_id mediumint(8) unsigned NOT NULL auto_increment,
cat_title varchar(100),
cat_order mediumint(8) unsigned NOT NULL,
PRIMARY KEY (cat_id),
KEY cat_order (cat_order)
);
CREATE TABLE phpbb_config(
config_name varchar(255) NOT NULL,
config_value varchar(255) NOT NULL,
PRIMARY KEY (config_name)
);
#
CREATE TABLE phpbb_disallow(
disallow_id mediumint(8) unsigned NOT NULL auto_increment,
disallow_username varchar(25) NOT NULL,
PRIMARY KEY (disallow_id)
);
CREATE TABLE phpbb_forums(
forum_id smallint(5) unsigned NOT NULL,
cat_id mediumint(8) unsigned NOT NULL,
forum_name varchar(150),
forum_desc text,
forum_status tinyint(4) NOT NULL,
forum_order mediumint(8) unsigned DEFAULT '1' NOT NULL,
forum_posts mediumint(8) unsigned NOT NULL,
forum_topics mediumint(8) unsigned NOT NULL,
forum_last_post_id mediumint(8) unsigned NOT NULL,
prune_next int(11),
prune_enable tinyint(1) NOT NULL,
auth_view tinyint(2) NOT NULL,
auth_read tinyint(2) NOT NULL,
auth_post tinyint(2) NOT NULL,
auth_reply tinyint(2) NOT NULL,
auth_edit tinyint(2) NOT NULL,
auth_delete tinyint(2) NOT NULL,
auth_sticky tinyint(2) NOT NULL,
auth_announce tinyint(2) NOT NULL,
auth_vote tinyint(2) NOT NULL,
auth_pollcreate tinyint(2) NOT NULL,
auth_attachments tinyint(2) NOT NULL,
PRIMARY KEY (forum_id),
KEY forums_order (forum_order),
KEY cat_id (cat_id),
KEY forum_last_post_id (forum_last_post_id)
);
CREATE TABLE phpbb_forum_prune(
prune_id mediumint(8) unsigned NOT NULL auto_increment,
forum_id smallint(5) unsigned NOT NULL,
prune_days smallint(5) unsigned NOT NULL,
prune_freq smallint(5) unsigned NOT NULL,
PRIMARY KEY (prune_id),
KEY forum_id (forum_id)
);
CREATE TABLE phpbb_groups(
group_id mediumint(8) NOT NULL auto_increment,
group_type tinyint(4) DEFAULT '1' NOT NULL,
group_name varchar(40) NOT NULL,
group_description varchar(255) NOT NULL,
group_moderator mediumint(8) NOT NULL,
group_single_user tinyint(1) DEFAULT '1' NOT NULL,
PRIMARY KEY (group_id),
KEY group_single_user (group_single_user)
);
CREATE TABLE phpbb_posts(
post_id mediumint(8) unsigned NOT NULL auto_increment,
topic_id mediumint(8) unsigned NOT NULL,
forum_id smallint(5) unsigned NOT NULL,
poster_id mediumint(8) NOT NULL,
post_time int(11) NOT NULL,
poster_ip varchar(8) NOT NULL,
post_username varchar(25),
enable_bbcode tinyint(1) DEFAULT '1' NOT NULL,
enable_html tinyint(1) NOT NULL,
enable_smilies tinyint(1) DEFAULT '1' NOT NULL,
enable_sig tinyint(1) DEFAULT '1' NOT NULL,
post_edit_time int(11),
post_edit_count smallint(5) unsigned NOT NULL,
PRIMARY KEY (post_id),
KEY forum_id (forum_id),
KEY topic_id (topic_id),
KEY poster_id (poster_id),
KEY post_time (post_time)
);
CREATE TABLE phpbb_posts_text(
post_id mediumint(8) unsigned NOT NULL,
bbcode_uid varchar(10) NOT NULL,
post_subject varchar(60),
post_text text,
PRIMARY KEY (post_id)
);
CREATE TABLE phpbb_privmsgs(
privmsgs_id mediumint(8) unsigned NOT NULL auto_increment,
privmsgs_type tinyint(4) NOT NULL,
privmsgs_subject varchar(255) NOT NULL,
privmsgs_from_userid mediumint(8) NOT NULL,
privmsgs_to_userid mediumint(8) NOT NULL,
privmsgs_date int(11) NOT NULL,
privmsgs_ip varchar(8) NOT NULL,
privmsgs_enable_bbcode tinyint(1) DEFAULT '1' NOT NULL,
privmsgs_enable_html tinyint(1) NOT NULL,
privmsgs_enable_smilies tinyint(1) DEFAULT '1' NOT NULL,
privmsgs_attach_sig tinyint(1) DEFAULT '1' NOT NULL,
PRIMARY KEY (privmsgs_id),
KEY privmsgs_from_userid (privmsgs_from_userid),
KEY privmsgs_to_userid (privmsgs_to_userid)
);
CREATE TABLE phpbb_privmsgs_text(
privmsgs_text_id mediumint(8) unsigned NOT NULL,
privmsgs_bbcode_uid varchar(10) NOT NULL,
privmsgs_text text,
PRIMARY KEY (privmsgs_text_id)
);
CREATE TABLE phpbb_ranks(
rank_id smallint(5) unsigned NOT NULL auto_increment,
rank_title varchar(50) NOT NULL,
rank_min mediumint(8) NOT NULL,
rank_special tinyint(1),
rank_image varchar(255),
PRIMARY KEY (rank_id)
);
CREATE TABLE phpbb_search_results(
search_id int(11) unsigned NOT NULL,
session_id varchar(32) NOT NULL,
search_array text NOT NULL,
PRIMARY KEY (search_id),
KEY session_id (session_id)
);
CREATE TABLE phpbb_search_wordlist(
word_text varchar(50) binary NOT NULL,
word_id mediumint(8) unsigned NOT NULL auto_increment,
word_common tinyint(1) unsigned NOT NULL,
PRIMARY KEY (word_text),
KEY word_id (word_id)
);
CREATE TABLE phpbb_search_wordmatch(
post_id mediumint(8) unsigned NOT NULL,
word_id mediumint(8) unsigned NOT NULL,
title_match tinyint(1) NOT NULL,
KEY post_id (post_id),
KEY word_id (word_id)
);
CREATE TABLE phpbb_sessions(
session_id char(32) NOT NULL,
session_user_id mediumint(8) NOT NULL,
session_start int(11) NOT NULL,
session_time int(11) NOT NULL,
session_ip char(8) NOT NULL,
session_page int(11) NOT NULL,
session_logged_in tinyint(1) NOT NULL,
session_admin tinyint(2) NOT NULL,
PRIMARY KEY (session_id),
KEY session_user_id (session_user_id),
KEY session_id_ip_user_id (session_id, session_ip, session_user_id)
);
CREATE TABLE phpbb_smilies(
smilies_id smallint(5) unsigned NOT NULL auto_increment,
code varchar(50),
smile_url varchar(100),
emoticon varchar(75),
PRIMARY KEY (smilies_id)
);
CREATE TABLE phpbb_themes(
themes_id mediumint(8) unsigned NOT NULL auto_increment,
template_name varchar(30) NOT NULL,
style_name varchar(30) NOT NULL,
head_stylesheet varchar(100),
body_background varchar(100),
body_bgcolor varchar(6),
body_text varchar(6),
body_link varchar(6),
body_vlink varchar(6),
body_alink varchar(6),
body_hlink varchar(6),
tr_color1 varchar(6),
tr_color2 varchar(6),
tr_color3 varchar(6),
tr_class1 varchar(25),
tr_class2 varchar(25),
tr_class3 varchar(25),
th_color1 varchar(6),
th_color2 varchar(6),
th_color3 varchar(6),
th_class1 varchar(25),
th_class2 varchar(25),
th_class3 varchar(25),
td_color1 varchar(6),
td_color2 varchar(6),
td_color3 varchar(6),
td_class1 varchar(25),
td_class2 varchar(25),
td_class3 varchar(25),
fontface1 varchar(50),
fontface2 varchar(50),
fontface3 varchar(50),
fontsize1 tinyint(4),
fontsize2 tinyint(4),
fontsize3 tinyint(4),
fontcolor1 varchar(6),
fontcolor2 varchar(6),
fontcolor3 varchar(6),
span_class1 varchar(25),
span_class2 varchar(25),
span_class3 varchar(25),
img_size_poll smallint(5) unsigned,
img_size_privmsg smallint(5) unsigned,
PRIMARY KEY (themes_id)
);
CREATE TABLE phpbb_themes_name(
themes_id smallint(5) unsigned NOT NULL,
tr_color1_name char(50),
tr_color2_name char(50),
tr_color3_name char(50),
tr_class1_name char(50),
tr_class2_name char(50),
tr_class3_name char(50),
th_color1_name char(50),
th_color2_name char(50),
th_color3_name char(50),
th_class1_name char(50),
th_class2_name char(50),
th_class3_name char(50),
td_color1_name char(50),
td_color2_name char(50),
td_color3_name char(50),
td_class1_name char(50),
td_class2_name char(50),
td_class3_name char(50),
fontface1_name char(50),
fontface2_name char(50),
fontface3_name char(50),
fontsize1_name char(50),
fontsize2_name char(50),
fontsize3_name char(50),
fontcolor1_name char(50),
fontcolor2_name char(50),
fontcolor3_name char(50),
span_class1_name char(50),
span_class2_name char(50),
span_class3_name char(50),
PRIMARY KEY (themes_id)
);
CREATE TABLE phpbb_topics(
topic_id mediumint(8) unsigned NOT NULL auto_increment,
forum_id smallint(8) unsigned NOT NULL,
topic_title char(60) NOT NULL,
topic_poster mediumint(8) NOT NULL,
topic_time int(11) NOT NULL,
topic_views mediumint(8) unsigned NOT NULL,
topic_replies mediumint(8) unsigned NOT NULL,
topic_status tinyint(3) NOT NULL,
topic_vote tinyint(1) NOT NULL,
topic_type tinyint(3) NOT NULL,
topic_first_post_id mediumint(8) unsigned NOT NULL,
topic_last_post_id mediumint(8) unsigned NOT NULL,
topic_moved_id mediumint(8) unsigned NOT NULL,
PRIMARY KEY (topic_id),
KEY forum_id (forum_id),
KEY topic_moved_id (topic_moved_id),
KEY topic_status (topic_status),
KEY topic_type (topic_type)
);
CREATE TABLE phpbb_topics_watch(
topic_id mediumint(8) unsigned NOT NULL,
user_id mediumint(8) NOT NULL,
notify_status tinyint(1) NOT NULL,
KEY topic_id (topic_id),
KEY user_id (user_id),
KEY notify_status (notify_status)
);
CREATE TABLE phpbb_user_group(
group_id mediumint(8) NOT NULL,
user_id mediumint(8) NOT NULL,
user_pending tinyint(1),
KEY group_id (group_id),
KEY user_id (user_id)
);
CREATE TABLE phpbb_users(
user_id mediumint(8) NOT NULL,
user_active tinyint(1) DEFAULT '1',
username varchar(25) NOT NULL,
user_password varchar(32) NOT NULL,
user_session_time int(11) NOT NULL,
user_session_page smallint(5) NOT NULL,
user_lastvisit int(11) NOT NULL,
user_regdate int(11) NOT NULL,
user_level tinyint(4),
user_posts mediumint(8) unsigned NOT NULL,
user_timezone decimal(5,2) DEFAULT '0.00' NOT NULL,
user_style tinyint(4),
user_lang varchar(255),
user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL,
user_new_privmsg smallint(5) unsigned NOT NULL,
user_unread_privmsg smallint(5) unsigned NOT NULL,
user_last_privmsg int(11) NOT NULL,
user_emailtime int(11),
user_viewemail tinyint(1),
user_attachsig tinyint(1),
user_allowhtml tinyint(1) DEFAULT '1',
user_allowbbcode tinyint(1) DEFAULT '1',
user_allowsmile tinyint(1) DEFAULT '1',
user_allowavatar tinyint(1) DEFAULT '1' NOT NULL,
user_allow_pm tinyint(1) DEFAULT '1' NOT NULL,
user_allow_viewonline tinyint(1) DEFAULT '1' NOT NULL,
user_notify tinyint(1) DEFAULT '1' NOT NULL,
user_notify_pm tinyint(1) NOT NULL,
user_popup_pm tinyint(1) NOT NULL,
user_rank int(11),
user_avatar varchar(100),
user_avatar_type tinyint(4) NOT NULL,
user_email varchar(255),
user_icq varchar(15),
user_website varchar(100),
user_from varchar(100),
user_sig text,
user_sig_bbcode_uid varchar(10),
user_aim varchar(255),
user_yim varchar(255),
user_msnm varchar(255),
user_occ varchar(100),
user_interests varchar(255),
user_actkey varchar(32),
user_newpasswd varchar(32),
PRIMARY KEY (user_id),
KEY user_session_time (user_session_time)
);
CREATE TABLE phpbb_vote_desc(
vote_id mediumint(8) unsigned NOT NULL auto_increment,
topic_id mediumint(8) unsigned NOT NULL,
vote_text text NOT NULL,
vote_start int(11) NOT NULL,
vote_length int(11) NOT NULL,
PRIMARY KEY (vote_id),
KEY topic_id (topic_id)
);
CREATE TABLE phpbb_vote_results(
vote_id mediumint(8) unsigned NOT NULL,
vote_option_id tinyint(4) unsigned NOT NULL,
vote_option_text varchar(255) NOT NULL,
vote_result int(11) NOT NULL,
KEY vote_option_id (vote_option_id),
KEY vote_id (vote_id)
);
CREATE TABLE phpbb_vote_voters(
vote_id mediumint(8) unsigned NOT NULL,
vote_user_id mediumint(8) NOT NULL,
vote_user_ip char(8) NOT NULL,
KEY vote_id (vote_id),
KEY vote_user_id (vote_user_id),
KEY vote_user_ip (vote_user_ip)
);
CREATE TABLE phpbb_words(
word_id mediumint(8) unsigned NOT NULL auto_increment,
word char(100) NOT NULL,
replacement char(100) NOT NULL,
PRIMARY KEY (word_id)
);
CREATE TABLE phpbb_confirm(
confirm_id char(32) NOT NULL,
session_id char(32) NOT NULL,
code char(6) NOT NULL,
PRIMARY KEY (session_id, confirm_id)
);
Actually it was updating instead of deleting.Ace Pace wrote:So basicly before merging we're deleting all the double forums and only then merging.
Yes, however, THIS would be the most tedious job. Say, in Librium Arcana, my user name is "Kreshna Aryaguna Nurzaman", while in The Paladin Domain, my user name is "KAN". Now how to tell the admins that both user names actually belong to the same person? If we just merge the content of the table phpbb_users from both source database, then I would have two accounts in the new database!Ace Pace wrote:Also, is it possible to have one merged user list, relevent to three differant forums?
Librium Arcana wrote: The Internet is changed.
I feel it in the keyboard. I see it in the monitor. I smell it in the air. Much that once was...is lost. For none now post who remember it.
It began with the forging of the great Boards.
Three were given to the experts. Educated, smartest and richest of all beings.
Seven to the gaming Lords. Great players and sportsmen of the "Best Score" halls.
And nine, nine Boards were gifted to the race of geeks. Who above all else, desire lives.
For within these Boards was bound the strength and will to govern each forum.
But they were all of them...decieved.
For another Board was made. In a land of programmers, in the heat of CPU overclocking, the Dark Lord DarkSteele forged in secret, a master Board. To control all others. And into this Board he poured his programming, his software, and his will to dominate all users. One Board to rule them all.
One by one, the free forums of the Internet fell to the power of the Board. But there were some who resisted. A last alliance of geeks and experts posted against the moderators of DarkSteele. And on the forums of his server, they fought for the freedom of the Internet.
Victory was near.
But the power of the Board...could not be undone.
Ace Pace wrote:No, say....
We simply(or not so simply) merge(and take out duplicate enteries) both user db's, is it possible to tell both forums to use the same list of users?
Say...KAN is renamed to Kreshna* (god your name is long), and the Paladin forum knows to look to Kreshna. even possible?
Yes, merging the users will be THE hardest part; you need to confirm which user exists in both forums and what are their usernames respectively; and you have to do it for every single user.Destructionator XV wrote:Merging two forums that already exist will be very hard. Say KAN has a user_id of 6 on Paladin's Domain and a user_id of 7 on the Librium Arcana.
Simply changeing the id of one to equal the other is only one step: that ID controls everything relating to that user.