LBS转WordPress全攻略

首先,我要致谢,要感谢的人太多了。我要感谢Linus Torvalds,甚至要感谢Bill.Gates提供操作系统,没有他们,我不可能成功转移我的网站,虽然我不认识他们,也没见过他们。同样,在这数据转换过程中,同样也有很多没见过面的朋友给予我无私的帮助,如SUNU,Cuimeng、Ariel Yang 、Jerry、2ndboyMrcoolFenng 也有见过面的朋友给我帮助和指导,如 SiCsidekick,我不知道如何感谢你们才好,这样吧,哪天在人海中碰上了,我请你们吃饭好了。
我从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工具,lbs2wp1.5点击下载,。lbs2WP204转换脚本下载,这个过程中,还遇到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才行。 最后,清空原来的乱码数据,再输入任何含中文的数据后,在任何地方都看不到乱码了。
img

在解决编码的过程中,我得到了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 (校勘)字符集:

collation charset error

也许正是这个原因,让我无法导入SQL文件,也导致我导出的数据无法重新导回数据库中。Doubleaf也说自己无法备份自己的数据库,不知道是不是也是这个原因。 在MYSQL4.0.26中导出导入数据却方便得很。 谁能帮我解决这个问题?

UPDATA:
刚才得到hhalloyy的指点,最后一个问题也有了答案:点上图中的Import旁边的操作按钮,然后就可以更改collation (校勘)字符集为utf8_general_ci了。把所有的表都更改好之后,我再次测试了备份和发送trackback,一切正常了!可以及导出所有数据为SQL文件了,导出来的SQL文件中没有乱码了!发送trackback也全部没有乱码的了!Doubleaf也应该可以备份自己的数据库了!
好了,所有问题都似乎解决了!全攻略完!有问题请跟贴:)

PS:Doubleaf桑椹的WordPress的网志的源代码中的中文都显示为乱码,而我的网志源代码在查看时显示中文是正确的,看来,我比前辈们更幸运啊,我的WP的编码总问题应该是得到了彻底解决,Doubleaf和桑椹的WP的编码还有点小问题,看来不影响使用,不知道为会不影响数据导出。刚才仔细看了看,不知道为什么桑林志的首页的源代码里的中文却能正确显示。我去提醒一下他们,看他们用我的方法和经验能不能彻底解决编码问题。

58 thoughts on “LBS转WordPress全攻略”

  1. 哈哈,我也是昨天晚上才搞定数据库从MySQL4.0升级的问题,不过我的那个是5.0,比你的4.1还高。

    改整个表单的collation,可以在初始建立数据库时设定,也可以后期更改。
    我是在选择菜单里的“SQL”命令,然后在最下面有个转换。
    或者你是在刚进入phpmyadmin时,右侧列表里可以更换。

    不知道你的4.1是不是这样,有问题再联系吧。

  2. 错,刚才不是菜单里的“SQL”,而是“操作”。不好意思,记混了。

    你这个服务器还好,能设置字符集和连接校对,我最开始那个都没权利设置的,晕死我。
    不过还好那个默认是utf-8的,不然我非要像你一样rss导入了…..

  3. to Sidekick:是啊,那是第二天中午在餐厅吃饭时,我跟Vista还有小白坐在一起吃饭,你当时在跟Vista说话,我记住你和你胸牌上的名字了:)虽然之前没听说过你。

  4. 恭喜全面搞定。
    WP看起来很不错。
    zola 我要好好跟你学习一下怎么玩PHP+MYSQL
    这里有没有高人,请问如果用FreeBsd做虚拟主机,自己用,用什么版本好。网上找的资料太多。我无法从浩瀚网海中找到有用的资料。最好谁告诉我一下。

  5. to Zola: 不用客气,我也是摸索了半天。

    其实我在MySQL4.0下的数据库里所有中文也全是乱码,但新的5.0里面一切显示正常,不知道是不是4.0的原因,还是我那个服务器的默认字符问题(这个服务器不能更改,把核对编码都屏蔽了)。

  6. 不知道您的域名是哪里注册的,我听说,如果你的网站不备案,如果是国内域名注册商注册的域名要责成域名注册商关闭域名解析的,不知道是真是假,希望您能提前作出准备。

  7. ‘桑椹的WordPress的网志的源代码中的中文都显示为乱码’

    我看了桑椹的WordPress的网志的源代码,都能正确显示中文呀(firefox)

  8. 在IE里查看桑椹的WordPress的网志的源代码时,会自动用记事本打开,这时看到的源代码的中文是乱码.,我想应该不会有乱码才对.FIREFOX下查看源代码却没有乱码出现.
    不知道问题出在哪里..但至少我这边是没有任何问题了.

  9. 同样是用notepad打开wordpress源代码,有些页面有乱码,有些却没有,显然还是有问题存在.

    在firefox和editplus中能正常,显示汉字,这也许是firefox和editplus兼容性较好,识别字符更智能化一些吧.我不明白他们的问题在哪里,反正我的wordpress里找不到乱码了:)

  10. 一个新发现!此文最后提及的查看页面源文件是乱码,此问题另有稀窍!在我反复排查之后定位到一个插件,那就是桑椹兄台所修改的一个“随机日志显示插件”惹的祸!只要把该插件卸载,再查看页面源代码就没有乱码了!

    当然如果没有安装此插件还是有乱码,就可能是编码和mysql数据库的问题了。呵呵。

  11. Pingback: 桑林志
  12. 我的wordpress2.0的blog..用的mysql 是3.23的。..-_-!…我的网页源文件都可以显示中文。。但是我自己写的php程序往mysql插入中文,,在取出来的时候页面源文件就是乱码了。。汗。。。

  13. Pingback: wpfans.org
  14. Pingback: Looki 's Blog

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据