跳至主要内容

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...

How to Make Money from Home Posting Links With No Out of Pocket Expense

Many people are earning money working from home just posting links on a blog, a website, or on well organized Social network marketing website. Anyone can earn substantial income by knowing what to do, where to do it, and how to do it. This article is designed around the Know How concepts to help people without that knowledge to set up their Blogs or Websites to achieve goal. Money is a medium of exchange that brings financial success TRAFFIC EXCHANGE ACCOUNT Log into your website or blog account and place the adsense code into the html document. Then save your document. Upload you website or blog to the internet following any instruction you received from your webmaster. Remember that your webmaster host your website or blog absolutely free. You must publish your site or blog for changes to take place. You now need free traffic resources to advertise and promote your new blog...

找到一个可以替代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...