SmartFAQ 由 The SmartFactory 开发(https://www.smartfactory.ca),InBox Solutions(https://www.inboxsolutions.net)的一个部门

如何使用 MySQL 在网站之间共享表?
要共享表,您需要在您的服务器上安装 MySQL 5 或更高版本。

技巧是您可以使用 MySQL 引擎 MERGE,MySQL 将就像看待其他表一样看待该表。

以下是思路

1) 您正常安装 xoops,使用 db 前缀 "site1"。
2) 您再次安装,使用 db 前缀 "site2"。
3) 导出从 site1 数据库的表,包括整个结构和数据。(*)
4) 删除要共享的表,重新导入。(*)
5) 现在,删除将被替换的 site2 表。
6) 从导出文件复制该表的结构(只复制结构,不复制数据)并替换最后一行。


) TYPE= MyISAM ENGINE=MERGE UNION=(xoops_users) INSERT_METHOD=FIRST;


如果以用户表为例,您的代码应该像下面这样。

CREATE TABLE `xoops02_users` (
`uid` mediumint(8) unsigned NOT NULL auto_increment,
`name` varchar(60) NOT NULL default '',
`uname` varchar(25) NOT NULL default '',
`email` varchar(60) NOT NULL default '',
`url` varchar(100) NOT NULL default '',
`user_avatar` varchar(30) NOT NULL default 'blank.gif',
`user_regdate` int(10) unsigned NOT NULL default '0',
`user_icq` varchar(15) NOT NULL default '',
`user_from` varchar(100) NOT NULL default '',
`user_sig` tinytext NOT NULL,
`user_viewemail` tinyint(1) unsigned NOT NULL default '0',
`actkey` varchar(8) NOT NULL default '',
`user_aim` varchar(18) NOT NULL default '',
`user_yim` varchar(25) NOT NULL default '',
`user_msnm` varchar(100) NOT NULL default '',
`pass` varchar(32) NOT NULL default '',
`posts` mediumint(8) unsigned NOT NULL default '0',
`attachsig` tinyint(1) unsigned NOT NULL default '0',
`rank` smallint(5) unsigned NOT NULL default '0',
`level` tinyint(3) unsigned NOT NULL default '1',
`theme` varchar(100) NOT NULL default '',
`timezone_offset` float(3,1) NOT NULL default '0.0',
`last_login` int(10) unsigned NOT NULL default '0',
`umode` varchar(10) NOT NULL default '',
`uorder` tinyint(1) unsigned NOT NULL default '0',
`notify_method` tinyint(1) NOT NULL default '1',
`notify_mode` tinyint(1) NOT NULL default '0',
`user_occ` varchar(100) NOT NULL default '',
`bio` tinytext NOT NULL,
`user_intrest` varchar(150) NOT NULL default '',
`user_mailok` tinyint(1) unsigned NOT NULL default '1',
PRIMARY KEY (`uid`),
KEY `uname` (`uname`),
KEY `email` (`email`),
KEY `uiduname` (`uid`,`uname`),
KEY `unamepass` (`uname`,`pass`)
) TYPE= MyISAM ENGINE=MERGE UNION=(xoops_users) INSERT_METHOD=FIRST;



注意:这个“技巧”对表的结构非常敏感。如果结构发生变化,您将不得不重新进行这个技巧。

(*)正如注意中所说,这个“技巧”对结构过于敏感,测试后发现让这个技巧有效的方法是先导出表,然后再手动导入。

最初由 Skalpa 提出此技巧
krewl 提出最终解决方案并进行了测试


评论归作者所有。我们不负责其内容。


Login

Who's Online

272 user(s) are online (21 user(s) are browsing XOOPS FAQ)


Members: 0


Guests: 272


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Aug 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Did you know ?

Xoops can be run in foreign languages?

Random question

How do I install a module?