昨晚对网站(
eygle.com )进行了建站以来最大的一次迁移。
迁移的主要内容包括:
1.将数据库由Berkeley DB转为Mysql
转换原因:Berkeley DB的管理和操作困难,自己不熟悉;Mysql的管理和维护就容易得多,也可以很容易的进行一些小开发以完善站点功能.
最初选择Berkeley DB是因为配置简单,但是不支持SQL,管理实在麻烦;而且数据量大了之后,总觉得更新性能很差;虽然现在
Berkeley DB已经属于Oracle了,但是还是选择换掉它。
2.将网站字符集由GB2312转换为UTF-8
转换原因:建站之初选择了GB2312字符集,可是这个字符集和其他网站进行数据交互时就出现了问题,乱码是最头痛的,这次痛下决心,将网站转为UTF-8编码。
转换主要有以下几个注意事项:
1.MTEntryBasename 的问题
由于MT的导出功能不导出BaseName属性,缺省的会丢失所有自定义的Basename,参考
DCBA的修正解决了这个问题。
需要修改的文件是: $MT_HOME/lib/MT/ImportExport.pm
以下红色部分代码为修改部分:
} elsif ($key eq 'TITLE') {
$entry->title($val);
} elsif ($key eq 'BASENAME') {
$entry->basename($val);
} elsif ($key eq 'DATE') {
第二处:
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
BASENAME: <$MTEntryBasename strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
2.MT的Tag导出问题
同样,MT的导出功能不能导出Tag,这也是一个麻烦事,参考
路杨的Hack也解决了这个问题。
仍然是修改: $MT_HOME/lib/MT/ImportExport.pm
以下红色部分代码为修改部分:
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$>
ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$>
<MTEntryIfTagged>
Tags: <MTEntryTags><$MTTagName$>,</MTEntryTags>
</MTEntryIfTagged>
第二处修改为:
elsif ($key eq 'TITLE') { $entry->title($val); }
elsif ($key eq 'Tags') {
if ($val)
{
$cb->(MT->translate("Find tags ('[_1]')...\n", $val));
my @tagnames = split(',',$val);
$entry->add_tags(@tagnames);
}
}
现在MT3.3的导出功能是比较简单的,在MT的官方网站上看了一下,官方的说法是,目前正准备开发一个全新的导入导出模块,提供更为强大的功能,所以暂时不对现有的功能进行修正了。
接下来整个转换就比较顺利了,现在整个网站的后台是基于MySQL数据库的了。
-The End-