购买的hostmonster空间上有几个朋友的Blog,由于HOST是PHP+mySQL环境,“强迫”他们放弃了PJblog[ASP环境],安装了Wordpress,面对WP强大的功能、丰富的扩展、持续的维护,相信他们不会后悔,同时会慢慢明白俺的良苦用心。

在昨天购买HM的独立IP,以及更换PHP版本后,本以为可以放松一会儿了,谁知道又出现情况。一个Wordpress Database丢失,不知道被谁误操作删除。幸亏在帮他们安装Wordpress时,已经顺手帮他们安装了"Wordpress Database Backup"插件[下载地址]。每天进行备份数据库到邮箱。使用备份的数据库,可以完全回复数据库到前一天的状态。这不,我的活儿又来了。

恢复过程通过HostMonster控制台自带的phpMyAdmin进行。为避免出现乱码,操作过程,参考了时光漫步桑林志夜工厂的文档,其中,推荐“时光漫步”的文档,图文并茂,简单易懂。

完成导入后,主页却还是显示为乱码——本应出现中文字的被“???”代替。对照导入步骤多次执行,问题依旧,真是恨得我咬牙切齿的。突然发现,虽然我已经修改数据库collation为utf8_genneral_ci,但是查看phpMyAdmin中对应数据库的结构(Structure),发现导入的每个table的collation属性还是latin1_swedish_ci【一般国外主机默认的collation】。

经验证,发现是出现了一个低级错误,WordPress Database Backup的备份文件,默认生成格式为所其在数据库的collation,在导出的文中体现为“CHARSET=latin1”。

解决方法:打开备份文档,选用替换选项,把所有“CHARSET=latin1”替换为“CHARSET=utf8”。注意,文件中不止包含一个“CHARSET=latin1”,应该都替换掉。

下面为恢复数据库方法摘要:

  1. 进入phpMyAdmin界面,打开相应的数据库,点右上角的Operations
  2. 在出现的页面下找到Collation,改为utf8_general_ci,Go确认
  3. 点上面菜单Import:确认Character 是utf8。导入数据库文件。【一方面在导入时,应该选择UTF8选项,另一方面则应注意,数据库备份文件中Charset的格式,参照上面方法进行修改。】
  4. 编辑/wp-includes/wp-db.php文件。在“$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);”后面添加“ $this->query(”SET NAMES ‘utf8’”);” 语句【请手动添加,复制会产生大小写错误】。
  5. 整网站的链接。【由于是从同一WP backup中恢复,不存在此类情况,如有需要,请参阅时光漫步blog

完成上述步骤,网页显示正常。嘿,哥们,下次记得把俺的工钱带来

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 China Mainland License.