proxy代理   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
soft 软件   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« windtear 追求完美 重装上阵 | Main | windows vista 下 ie7 的代理自动配置脚本注意事项 »

January 2, 2008

手工修改 MT 数据库 完成blog整体迁移

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/2008/01/migrate_mt_blog_manually.html

MovableType 3.35 的mysql数据库表结构:
+-----------------+
| mt_author |
| mt_blog |
| mt_category |
| mt_comment |
| mt_config |
| mt_entry |
| mt_fileinfo |
| mt_ipbanlist |
| mt_log |
| mt_notification |
| mt_objecttag |
| mt_permission |
| mt_placement |
| mt_plugindata |
| mt_session |
| mt_tag |
| mt_tbping |
| mt_template |
| mt_templatemap |
| mt_trackback |
+-----------------+

手工转移的话需要更新很多字段
主要是更新4个表 entry comment tbping (placement) 中的 blog_id

1. 把个人空间改成 blog 2
update mt_category set category_blog_id=2 where category_id=2;
2. 把所有文章换过来 blog 2
update mt_placement set placement_blog_id=2 where placement_blog_id=1 and placement_category_id=2;
然后循环得到 entry_id 挨个更新
SELECT placement_entry_id from mt_placement where placement_category_id=2 and placement_blog_id=2
update mt_entry set entry_blog_id=2 where entry_id=$placement_entry_id
如果mysql支持可以有两种方法
update mt_entry e,mt_placement p set e.entry_blog_id=2 where p.placement_blog_id=1 and p.placement_entry_id=e.entry_id and p.place_category_id=2;
update mt_entry e set e.entry_blog_id=2 where e.entry_id in (select p.placement_entry_id from mt_placement p where p.place_category_id=2);

3. 把原有路径做跳转 写进去一行 meta refresh
META HTTP-EQUIV="Refresh" content="0; URL=/"

SELECT p.placement_entry_id,e.entry_basename,e.entry_created_on from mt_placement p,mt_entry e where e.e
ntry_id=p.placement_entry_id and p.placement_category_id=2 and p.placement_blog_id=2
通过 $entry_created_on 得到年月日 便于定位新blog的url

4. 至此 entry 手动修改完毕

下面修改 comment
1. 获得 comment_id
select c.comment_id from mt_comment c,mt_placement p where p.placement_entry_id=c.comment_entry_id and p
.placement_blog_id=2

2. 更新
update mt_comment set comment_blog_id=2 where comment_id=$comment_id

更新 tbping (我把 mt_trackback 也更新了)
1. 获得 tbping_id
select c.tbping_id from mt_tbping c,mt_placement p where p.placement_entry_id=c.tbping_tb_id and p.place
ment_blog_id=2
2. 更新
update mt_tbping set tbping_blog_id=2 where tbping_id=$tbping_id

本blog WWW

Posted by windtear at January 2, 2008 7:26 PM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.