我从L-Blog1.1用起,然后没花多大力气就转移到LBS,接着又转换到LBS^2,从去年五月算起,用了差不多20个月了,算是LBS的忠实用户了。但这次的备案封波让我的网站被迫关张了,我的网站所在主机性能良好,表现非常不错,据说是广州数据局的高速1000M带宽接入,上传和下载速度都能达到ADSL的峰值,也就是60KBS上行250KBS下行的速率,换成bps,乘以8,刚好约512bps/2Mbps,我也舍不得这台主机,但是这荒唐的备案法让我被迫放弃了这么好的主机,我只好转战国外了。一时半刻我找不到主机,再说,听人说国外的主机都是Linux主机比Windows主机便宜,这也国内相反;正好前段时间听Fenng在BLOG里说提供免费的主机,他是租了一个国外的主机,还可以绑定域名,他就热心地提供限量的BLOG主机租用服务了,我去问他时,他已经结束提供免费服务了,我试着问他要,他居然答应了!不过是最后一个了,我估计我的站点会占用他很多流量,得省着用:)他热心地帮我开通了,还帮我安装好了WordPress,还告诉我用ssh登陆,我什么都不懂,我连SSH是什么都不知道,我只用openSSL登陆过mIRC,Google一下,找了一个scrt504.exe,登录上去却不知道用那些命令能干什么,我又懒得问Fenng那些东西有什么功能(主要是不好意思问),还是问Google比较方便。当务之急不是要了解SSH,就先放下不管。
Wordpress真是方便,我上网搜索找了一个wordprees汉化包zh_CN.mo,按照说明复制到\wp-includes\languages下,然后到wp-config.php里把define ('WPLANG', '');改为 define ('WPLANG', 'zh_CN'); 就汉化好了。你可以直接下载我的汉化包,事实上你可以下载任何一个wordpress用户的语言包。通常那个语言文件在\wp-includes\languages目录下。
安装过程如此简单,接下来导出和导入数据可麻烦了,我走了很多弯路。我看了Wordprss的说明,说明文件说能从RSS文件中导入,我想通常RSS文件中只包含最新的8条日志,还不是全文显示的,只是显示了日志摘要,我就在自己的电脑上装了一个IIS运行自己的BLOG程序,然后改LBS里的/source/src_feed.asp,将 SELECT TOP 8 tLog.log_id改为SELECT TOP 400 tLog.log_id,这样就将我的300多篇日志全部输出到feed.asp里了,另存为feed.xml就是。对了,ORDER BY tLog.log_postTime DESC也要改为ORDER BY tLog.log_postTime ASC ,不然导入到WP后你会发现你最后一次发表的日志的ID是1。
var strSQL = "SELECT TOP 400 tLog.log_id, tLog.log_catid, tLog.log_title,
tLog.log_authorid, tLog.log_author, tLog.log_mode, tLog.log_ubbFlags, tLog.log_postTime,
tLog.log_content0 FROM [blog_Article] tLog WHERE tLog.log_mode=1"+sqlWHERE+"
ORDER BY tLog.log_postTime ASC";
然后,你进入/wp-admin/import-rss.php点下一步就把所有的日志导到WP里了,这个办法是有效的,如果你不心疼你原来日志里的评论的话。哦,对了,为了防止RSS里的日志内容不完整,我进LBS后台管理里关闭了Article Auto-Split,不让他生成日志摘要,然后用笨办法把三百多篇日志编辑重新发表一次。这样,就没有日志被自动切断了,保证RSS输出的日志全部是完整的。300多篇日志重新编辑呐,可怜我这笨蛋,要是我像SUNU一样聪明和勤奋就不用受这苦了。:P 这是后话。
为了完整导入我的日志的评论,我费了很多时间,走了一些弯路。 我第一想法就是想通过SQL命令把原来的数据导出到一个*.SQL文件里,然后到MYSQL里执行就算导入了。但事实上不是这么简单的,由于LBS和WordPress(以下简称WP)的表里的字段不同,可用的数据只有日志内容和评论内容,我找来MS SQL Server 2000在家里的电脑上装上,又在远程的主机上装上phpMyAdmin 2.7.0-pl1,又在自己电脑上装了Apache+PHP+MYSQL,还装了MYSQL ODBC,我把LBS用的ACCESS数据库用DTS导到MS SQL里,然后利用ODBC导到本地的MY SQL数据库里,结果总是出现提示的错误信息:"不支持基于BLOB值的插入或更新的查询",怎么改字段类型都无法导入,在此浪费了我很多时间。在这里,我走了两个弯路:
1、我不知道MS SQL有没有办法导出数据库为包含结构和数据的SQL命令,找了很多人帮忙都不成,万般无耐下乞求SiC帮忙,他百忙之中答应抽时间来帮我转换数据,结果他也没有办法利用MS SQL server 2000的企业管理器将数据导出为SQL文件,做这些就花掉我两天时间;
2、接着我还在想,如果能在本地导入到MS SQL数据库,我就可以将本地数据库的数据导出,结果无法基于BLOB值的插入,又浪费我两天时间。
当我快要抓狂的时候,一位救星出现了,他就是SUNU! 认识他很久了,我经常去他的BLOG逛,他也经常来我的BLOG灌水,在我的BLOG,我发表了912条评论,他发表了95条评论,他是第二名,第三名是发了57条的oldcpu,偶们应该算是老朋友了,他不救我谁来救我?他很快写了一段VBS代码帮我转换数据库为包含结构和数据的SQL命令,后来,我发现他的转换过程中没有去掉LBS的UBB代码,那些UBB代码却不能在WP里被解释,我又让他帮我加上UBB转换功能。 这是SUNU的LBS2WP工具,点击下载。这个过程中,还遇到WP的变态的编码问题,我就不花时间描述编码问题了。我只描述下我的解决方案:
MYSQL的版本差异会引发Wordpress出现乱码. MySQL 4.0x 版本以下升级到了4.1x
或者移动Wordpress到使用4.1x 的主机上将会遇到乱码问题。彻底解决编码问题就是统一用UTF8编码,首先, 将Wordpress 的wp-includes的wp-db.php,在这句后面
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
加一句:
$this->query("SET NAMES 'utf8′");
这样就可以保证apche和MYSQL之间传递的是UTF8编码,但是,加这条代码前请确认你的MYSQL数据库的版权低于4.1,不是4.1x就不要添加,不然会报错,我测试过,我本机用的是4.0.26,结果报错。网站上用的MYSQL是4.1.15,加了这条代码后把phpmyadmin里MySQL 连接校对也要改为utf8_general_ci, 在phpmyadmin里把WP里所有的表的校对由latin1_general_ci改为如下图所示的utf8_general_ci, 当然,也要保证网页编码也是UTF8才行。 最后,清空原来的乱码数据,再输入任何含中文的数据后,在任何地方都看不到乱码了。
在解决编码的过程中,我得到了sidekick的帮助,也应该向桑椹致谢,感谢前辈们分享你们的经验,所以我也要分享一下经验,过不了多久,我也可以成为别人的前辈了。:)
我用SUNU写的工具从access数据库里导出包含数据和结构的SQL文件后,我能在MYSQL4.0.26居功导入了所有数据,一切正常,但在远程主机的MYSQL4.1.15中始终无法导入SQL文件并正确执行,我只好用笨办法,一点一点的复制SQL命令到phpMyAdmin里执行,还好,phpMyAdmin能让SQL命令成批执行,若不允许批处理,我想你不可能看到我这篇日志了,我也许到现在还在努力地copy and paste,直到我晕倒在键盘前为止。对了,在使用phpMyAdmin的Import功能导入SQL文件时,不仅有SQL命令不能正确执行的问题,而且还有时引发访问我的网站断开的问题,出现几分钟内不能访问我的网站上的任何文件,就像我们在GOOGLE里搜索敏感性字一样,看来GFW在防止间谍发送资料到国外的功能上做得非常棒,这也意味着我的数据中有太多少儿不宜的文字,呵。至于SQL命令不能导入并正确执行但在复制到web界面中能批量执行,我估计还是因为编码的问题没有得到彻底地解决,如下图所示,我找不到地方更改MYSQL4.1.15里的表的collation (校勘)字符集,我只能更改表中的字段的collation (校勘)字符集:
也许正是这个原因,让我无法导入SQL文件,也导致我导出的数据无法重新导回数据库中。Doubleaf也说自己无法备份自己的数据库,不知道是不是也是这个原因。 在MYSQL4.0.26中导出导入数据却方便得很。 谁能帮我解决这个问题?
UPDATA:
刚才得到hhalloyy的指点,最后一个问题也有了答案:点上图中的Import旁边的操作按钮,然后就可以更改collation (校勘)字符集为utf8_general_ci了。把所有的表都更改好之后,我再次测试了备份和发送trackback,一切正常了!可以及导出所有数据为SQL文件了,导出来的SQL文件中没有乱码了!发送trackback也全部没有乱码的了! Doubleaf也应该可以备份自己的数据库了!
好了,所有问题都似乎解决了!全攻略完!有问题请跟贴:)
PS:Doubleaf和桑椹的WordPress的网志的源代码中的中文都显示为乱码,而我的网志源代码在查看时显示中文是正确的,看来,我比前辈们更幸运啊,我的WP的编码总问题应该是得到了彻底解决,Doubleaf和桑椹的WP的编码还有点小问题,看来不影响使用,不知道为会不影响数据导出。刚才仔细看了看,不知道为什么 桑林志的首页的源代码里的中文却能正确显示。我去提醒一下他们,看他们用我的方法和经验能不能彻底解决编码问题。
评论