将后台数据从Berkeley的文件DB转到MySQL

作者:Dean 时间:2009-01-04 13:31:00 

最近决定把MT的后台数据从Berkeley的文件DB转到MySQL。原因之一是使用关系数据库可以获得更多的灵活性,比如运行一条sql来变更 所有entry的某一个属性;另外一个原因是为了提前熟悉一下这个数据库,牙牙网站使用虚拟主机,DreamHost提供的数据库是MySQL,而我从前 主要使用了SQL Server,Oracle和DB2,Postgresql也只了解了一点,而MySQL则几乎没有接触过。

下载了5.0.27安装文件,安装顺利,使用了第一个默认端口3306,UTF-8的数据库字符集。

安装完成,运行了命令行客户端,输入help,给出的帮助命令不多,也没见到有关数据库创建的命令,便查了安装的帮助文件,组织的还算不错,很齐全,很快找到相关的命令:

查看已有数据库show databases;连接数据库 testuse test;创建数据库 mtcreate database mt;接下来寻找把已有DB转化到MySQL的方法,很快找到一个第三方的工具mt-db-convert.cgi ,可以实现MT支持的几种不同的DB之间的转换。

下载回来放到cgi-bin的mt目录,在浏览器访问运行,输入新创建的MySQL数据库名称mt,用户名root,密码,主机填入localhost,开始Convert。转换过程很快就完成了,不到1分钟,没有出现错误提示,转换信息如下:

mt-db-convert.cgi($Rev: 173 $): Converting your MT data between DB engines (for MT 3.2) Loading database schema... Loading data... MT::Author . (1 objects saved.) MT::Blog .. (2 objects saved.) MT::Trackback .......... ..........

(327 objects saved.) MT::Category .......... ..........

(50 objects saved.) MT::Comment .. (2 objects saved.) MT::Entry .......... .......... ..........

(514 objects saved.) MT::IPBanList (0 objects saved.) MT::Log .......... .......... .......... .......... .......

(437 objects saved.) MT::Notification (0 objects saved.) MT::Permission ....

(4 objects saved.) MT::Placement .......... .......... .......... ..........

(527 objects saved.) MT::Template .......... .......... .......... ........

(83 objects saved.) MT::TemplateMap .......... (10 objects saved.) MT::TBPing (0 objects saved.) MT::Session .......... .......... .........

(29 objects saved.) MT::PluginData (0 objects saved.) MT::Config . (1 objects saved.) MT::FileInfo (0 objects saved.) Done copying data from DBM to DBI::mysql! All went well. Your recommended setting -------------------------------------

# DataSource R:/SITE/mt-db ObjectDriver DBI::mysql Database mt DBUser root DBHost localhost DBPassword comein -------------------------------------

然后修改mt-config.cgi文件,把数据源改成MySQL。

再次访问MT,看起来一切正常,甚至原有的session都没有丢掉,只是后台使用的数据已经改变了位置。

不过发现了中文乱码问题,Google到了这个方法 ,按文修改后,需要再次执行mt-db-convert.cgi,把数据重新导入MySQL,再访问MT,乱码没有了,所有中文显示正常。

转换后又发现了一个新的问题,原DB中的Tags全部丢失,原因是mt-db-convert.cgi仅支持到MT 3.1,3.3的新功能带来的数据变化可能还会有其它信息丢失。

NOTE

This script is compatible with Movable Type version 3.1x. I didn't test it at any other versions.

其实MT自身已经提供了转换工具mt-db2sql.cgi,与mt.cgi在同一目录当中。使用方法是,安装好MySQL数据库服务,并创建好用于MT的DB,将MySQL数据库的配置信息加入mt-config.cgi,并同时保留原Berkeley DB的路径配置,即保持两种DB的配置同时生效,然后通过浏览器运行mt-db2sql.cgi,转换会自动开始,显示如下信息:

Loading database schema...Loading data...MT::Author 1MT::Blog 1 3MT::Trackback ...Done copying data from Berkeley DB to your SQL database! All went well.确认转换成功后,再修改mt-config.cgi,注释掉Berkeley DB的配置即可。

标签:
0
投稿

猜你喜欢

  • 傲游对开发人员的影响越来越大了

    2009-10-14 13:16:00
  • SQL SQL Server 2008中的新日期数据类型

    2009-03-10 15:01:00
  • 能介绍一下NameSpace常用的地方吗?

    2009-11-01 18:11:00
  • 一个不错的javascript加密解密算法源码

    2010-03-28 13:12:00
  • WEB2.0时代活动类网页我们该如何设计?

    2009-12-16 12:19:00
  • 静态页面实现文章点击数统计的js方法

    2008-01-23 19:17:00
  • 好友列表利用率越高,社区越失败

    2008-04-10 12:22:00
  • 某年第一周开始日期sql实现方法

    2012-02-25 20:02:30
  • 从品牌网站看交互设计

    2009-08-18 12:39:00
  • 重新认识ASP之后的我在想"是时候改变了"

    2008-05-08 13:10:00
  • window安装mysql(zip、noinstall)

    2009-10-17 21:10:00
  • JavaScript中的64位加密及解密

    2009-12-23 19:10:00
  • 将mysql转换到oracle必须了解的50件事

    2010-07-05 12:15:00
  • Hibernate Oracle sequence的使用技巧

    2009-06-19 17:25:00
  • 教你怎样在Oracle数据库中高速导出/导入

    2009-02-04 16:59:00
  • [译]图片优化 第五章:AlphaImageLoader

    2010-08-29 18:39:00
  • MySQL性能诊断与调优工具

    2010-11-02 11:41:00
  • 50个常用sql语句 网上流行的学生选课表的例子

    2012-07-11 16:02:01
  • mysql3升级到mysql5解决乱码心得

    2009-04-20 14:41:00
  • 优化MySQL数据库性能的八大“妙手”

    2007-11-18 14:49:00
  • asp之家 网络编程 m.aspxhome.com