升级drupal6.4到drupal6.5

登录到zhupou.cn后台,好久没有运行cron了,我现在都是手工的运行它,以前从来没有配置过,而且又不愿意装poormanscron模块。刚开始还是好好的,运行后,就报警了:

There is a security update available for your version of Drupal. To ensure the security of your server, you should update immediately! See the available updates page for more information.

而且这个信息,走到哪里他都跟着你,没办法,只好升级一下drupal了,我目前使用的版本为drupal6.4,需要升级到drupal6.5.先到drupal.org上下载最新的6.5版,http://ftp.drupal.org/files/projects/drupal-6.5.tar.gz。解压缩这个文件。里面就是最新的drupal6.5了。

不过在决定升级到drupal6.5以前,现在自己本机上升级一下,由于我的数据库还是20多天前的,所以需要备份一下数据库。把本地的环境先与上面的同步一下。

1,      使用phpmyadmin备份数据库,然后使用sqlyog导入。打开本地的链接,http://localhost/zhupou/,出现了错误信息:

“Warning: Table 'zhupou.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:184:\"Table 'zhupou.cache_menu' doesn't exist\nquery: SELECT data, created, headers, expire, serialized FROM cache_menu WHERE cid = 'links:navigation:page-cid:node:1'\";s:5:\"%file\";s:41:\"F:\\xampp\\htdocs\\zhupou\\includes\\cache.inc\";s:5:\"%line\";i:26;}', 3, '', 'http://localhost/zhupou/', '', '127.0.0.1', 1223911496) in F:\xampp\htdocs\zhupou\includes\database.mysql.inc on line 128

开始以为是sqlyog的原因,接着使用命令行重新导入了数据库。还是报同样的错误,换成forefox,chrome还是抱错。在网上搜索了一下,没有找到有用的信息。哪错了?不得不认真的去读这段信息,原来drupal中的数据库表watchdog不存在,我打开数据库看了一下,确实没有这个表,打开线上的数据库,里面有这个表,打开备份的zhupou.sql文件,在最下面的地方,发现“Table './zhupou/watchdog' is marked as crashed and should be repaired”,原来备份的sql中,没有相关的语句。

我想到了,自己备份的时候,没有关闭自己的站点(将站点置于下线的状态),会不会是这个原因呢?

    导航到admin/settings/site-maintenance,选择Off-line,保存设置,使用phpmyadmin再次备份。打开新备份的zhupou.cn,拉到最下面,发现里面还是“Table './zhupou/watchdog' is marked as crashed and should be repaired”。我晕倒了,站点怎么?

    使用phpmyadmin查看线上的数据库,然后查看watchdog标,里面报错

“SQL 查询:

SHOW INDEX FROM `watchdog` ;

MySQL 返回:

#145 - Table './zhupou/watchdog' is marked as crashed and should be repaired

 

原来这个表坏了,总算找到原因了,怎么办,平时没有经常的备份,数据丢失了,自己的原因,还是虚拟主机服务商的原因,因为前段时间数据库一直有问题,如果是后者的话,真的是无商不奸了,先不管这个,需要找到解决的办法?在没有找到办法以前,先把这篇文章贴上去。

相关链接: Think in Drupal

Drupal版本:

升级drupal6.4到drupal6.5(1)

昨天晚上搞到快12点了,还是没有搞定,原本以为半个小时就可以的事情,却遇到了难以解决的问题,前篇文章贴出来以后,已经到了12点了,也就是今天的0时,昨天搞不定,今天一大早(这个也太早了)接着搞。

在phpmyadmin上,察看表watchdog的结构,搜索,插入都报错,同样的错误信息。在操作页面,有一个表维护,下面为“强制更新资料表("FLUSH") ”。自己不敢乱动,决定先在自己的机子上,直接恢复这张表看看。从数据库“drupal6”中复制表watchdog的结构到zhupou中。发现还是不行,报同样的错误。继续看错误信息,发现里面包含了“zhupou.cache_menu' doesn't exist”,这个表也不存在?

果然,cache_menu表不存在,而在“drupal6”(我的drupal6测试站点的数据库名)中,这个表是存在了,也就是说,应该有这个表的。查看线上的数据库,这个表也报废了,里面有错误,和watchdog一样。把这个表也恢复了,发现还是报错,在多个浏览器下做了测试,错误信息时有时无。重新登陆以后,发现错误信息没有了。点了几下,发现都没有问题。总算没有出现大问题。由于这两个标平时不怎么用,所以数据丢了也没有大事情。cache中的数据,数据会自动生成。而dog中的,从来还没有用过这个表呢。

相关链接: Think in Drupal

好了继续我的升级之旅。点击“强制更新资料表("FLUSH")”,发现需要RELOAD 权限:#1227 - Access denied; you need the RELOAD privilege for this operation。既然这个不行,那么就直接删除,再创建同样的表了。执行相应的sql语句,DROP TABLE,CREATE TABLE。之后访问自己的站点,没有出现异常。本地和在线站点都搞定了。再次同步本地的数据库,一切ok。

本地的和线上站点完全同步了。对本地的站点升级。

1,打开drupal-6.5\drupal-6.5下面的upgrade.txt文件,按照说明备份文件夹,我只备份了sites下面的目录,其它的我都没有动过,所以不用备份。

2.关闭站点,导航到admin/settings/site-maintenance,选择Off-line,保存。

       3,我没有使用自定义的主题,跳过;不过使用了几个第3方模块,将它们全部禁用。

4.删除原有的drupal核心文件。不包括sites,files目录。

5.将drupal-6.5\drupal-6.5下的核心文件拷贝过来。不包括sites。

6,运行http://localhost/zhupou/update.php,按照提示往下点击,最后看到:

The following queries were executed

system module

Update #6048

  • ALTER TABLE {menu_router} CHANGE load_functions `load_functions` TEXT NOT NULL
  • ALTER TABLE {menu_router} CHANGE to_arg_functions `to_arg_functions` TEXT NOT NULL

这意味升级成功了。不过还有工作要做呢。

7,导航到drupal管理员界面admin/build/modules,启用第3方模块。并重新运行update.php。

本地升级成功。升级在线站点。与本地不同的是,除了.htacess文件,我做了改动,为了省事,没有删除和拷贝这个文件,其它都一样。没有出现任何异常。在线站点升级成功。俺的站点已经更新到drupal6.5了,估计现在没有人访问。

Drupal版本: