跳至主要内容

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工具,点击下载。这个过程中,还遇到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的编码还有点小问题,看来不影响使用,不知道为会不影响数据导出。刚才仔细看了看,不知道为什么 桑林志的首页的源代码里的中文却能正确显示。我去提醒一下他们,看他们用我的方法和经验能不能彻底解决编码问题。

评论

此博客中的热门博文

How to Design a Store Front Sign

In this Article we will talk about designing a store front for a business. What color or size should your Letters & designs be? What to put on your sign and why?, then be ready to Get in touch with sign people and get your best deal. Large lettering with out a front sign could save you time and money Do your products have a special shape or color to emulate on your sign? Kodak is always in yellow and black, Coca-Cola white on red, Etc. Muffler places, have a sign in the shape of a muffler. your phone number on the store front some place, but not on the identification sign, (door, or window) Your Product & logos can be arranged on the front sign, or window. Not on the Pole sign, Store hours & phone number could fit in your design and by using the product color, it could add product recognition & enhance your design. Suppliers may provide plenty of advert...

music forum (zt)

24. moonlight - ≡ Sound Of Nature ≡ -     15. Tone Quebec Network 17.Ukoo http://www.hispeed.com.cn/Forum/LoadForum.asp?Foru m / a> http://bbs.dd81.com/index.php 30. Jazz pawnshop http://www.sogua.com/ 6. Lyrics 吾爱 http://www.inkui.com Reading of the singer in mind 2. Hyun tone http://d.sogou.com/ http://www.beihai365.com/bbs/forumdisplay.php?f/a> 20. Left Bank • Teana http://bbs.flamesky.com/ 8. Sogou sogou- 25.U Shadow 吾爱 sound waves 4. Need 14.HDCD http://www.commus.com/ 29, Buddhist music, do not know the name of the http://www.itpub.net/forum79.html http://bbs.kugoo.com/index.asp http://bbs.uying.com/176/Index.aspx http://board.verycd.com/ http://board.verycd.com/f8.html 13.MP3 barrage http://bbs.51lrc.com/index.asp?board/a> A pleasant song - "Dancing circulation" 19.Verycd of http://bbs.breezecn.com/ http://www.mp4cn.com/2008/index.html Sound of Music Forum, http://www.jazzsky.com/lb/cgi-bin/leobbs.cgi http://www.luopo.co...

找到一个可以替代ghs.google.com的地址

用Goole Blogger的自定义域名功能需要用到 ghs.google.com 做CNAME,或者用ping ghs.google.com 得出的IP做一个A记录.但是,伟大的GFW已经把 ghs.google.com 和部分IP屏蔽在大陆之外.这样的壮举使得我们的自定义域名不能正常访问,或者让你的网页背景.图片被滤掉,精心做成的模板变得惨白不堪. 那么,我们可不可以找一个替代 ghs.google.com 的地址呢?当然能.因为Google是强大的.它有许多有用的IP地址让你去探寻. 对 ghs.google.com 分析研究后发现, ghs.google.com 这台服务器并没有提供实质性的服务,而只是选择访问者访问最快的服务器(Google全球性公司,很多地区都有服务器).我们只要找到其他服务器的IP地址,并且这个IP地址没被屏蔽,那么就成了. 寻找这样的IP地址需要用到tracert命令.即在CMD模式下输入:tracert ghs.google.com ,在已经屏蔽的当下,最后自然得不出结果,这就需要我们使用代理了.使用不同地区的代理运行tracert ghs.google.com 命令. tracert ghs.google.com 的最后一跳会有类似这样的域名: eh-in-f121.google.com 如果在不用代理的情况下,你能ping通这个域名,那么恭喜你,你找到了!现在就可以用这个域名代替 ghs.google.com 设置你的CNAME了,ping出的IP地址可以做A记录,CNAME和A记录,只做其中之一就可以. hs-in-f121.google.com 64.233.179.121 eh-in-f121.google.com 72.14.207.121 bx-in-f121.google.com 66.249.81.121 ik-in-f121.google.com 66.249.91.121 这4个在我所在地区不能使用,而可以使用 tw-in-f121.google.com 72.14.235.121 或者209.85.171.121也可用 下面是一些不断更新的:74.125.43.121 除了使用代理来寻找,也可以通过一些网站提供的功能来寻找这个地址,很方便,就是使用网站提供的Traceroute.这些网站有: h...