"LOCK TABLES sequences WRITE" 错误

如果在使用Drupal中出现类似下面的错误:

user error: Access denied for user: 'YOUR DATABASE USER@localhost' to database 'YOUR DATABASE'
query: LOCK TABLES sequences WRITE in /your website/database.mysql.inc on line xx

说明你的Drupal安装时对应的数据库用户没有LOCK TABLE权限,而一些Drupal功能需要这一权限,所以就会造成上面的错误。一般来说,只要你可以赋予数据库用户这一权限就可以了。但如果你使用虚拟主机,一些服务商可能不允许使用这一权限,你需要联系你的服务商看看是否能够解决这一问题。

虽然也有一些折中的解决办法,但并不推荐使用,如果你的服务商不能开放这一权限,那么他们肯定不是适合你的Drupal的选择。

Garland主题的自动配色(color picker)怎么不见了?

如果5.x下面Garland主题的自动配色功能不见了,那么可能是下面几个原因:

  • 没有开启color模块
    确定你在管理>>站点建设>>模块(admin/build/modules)下面开启了颜色模块(color module)
  • 文件下载设置问题
    5.x下的配色功能只有在Drupal的文件下载设置为公开(Public – files are availabe using HTTP directly)是才能正常工作。你可以在管理>>站点设置>>文件系统(admin/settings/file-system)下面检查你的站点设置,把文件下载模式改成公开就可以了。
    如果你想使用私有下载模式,可以先暂时将其改成公开模式,将Garland主题改成你想要的配色之后,再改回私有模式就行了。
  • 没有PHP GD图形库支持
    你可以在管理>>日志>>状态报告(admin/logs/status)下面检查服务器GD库是否工作正常。如果没有,你可能需要联系你的空间商。
  • 禁用了javascript
    如果禁用了javascript,那么你只能看到选色框而不能看到调色轮以及预览图片。

PHP memory 错误

如果你碰到类似下面的错误信息,说明 Drupal 需求的内存超过了 PHP 允许内存值。

Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)...

你可以通过下面几种办法增加 PHP 内存上限:

  • 如果你可以更改 php.ini 文件,直接修改 memory_limit = **M 这一行就行了。
  • 一般虚拟主机你不能修改 php.ini 设置,那么可以尝试在 sites/default/settings.php 里添加
    ini_set('memory_limit', '**M');
  • 或者,修改 Drupal 安装目录下的 .htaccess 文件:
    php_value memory_limit **M

尝试增加 memory_limit 的值,将 **M 改为更高(例如 20M ),直到上面的错误信息消失。官方文档显示 Drupal 6.x 的最小需求 PHP 内存值为 16M。

不小心关闭了登录区块怎么办?

如果你关闭了登录区块,还可以通过下面的路径登录:

http://www.example.com/?q=user

如何彻底卸载并重装模块

Drupal5.x开始提供了一个hook_uninstall钩子,供模块卸载使用。绝大数5.x模块都使用了这一钩子(可以在.install文件中看到),用于卸载模块时彻底删除掉该模块的信息(数据库、变量等)。

在卸载模块时,您需要先到“管理->模块->列表(admin/build/modules)”下面,关闭该模块,但这只是暂时关闭模块,并没有完全卸载,您还需要点击页面上方的“卸载” tab 进一步卸载该模块,才能彻底从数据库中清除掉该模块的信息。

在有些情况下,如果模块没有正常卸载(比如关闭模块后,您没有再卸载,而只是手动删除了相关数据库表单),下次再重新安装该模块时可能会出现问题。这是因为,在数据库system table里面有所有已安装模块的记录,如果正常卸载,Drupal会删除掉这一项,下次再安装时会先查询这一项,如果不存在就通过hook_install来新建相应数据库表单。如果没有正常卸载,system表单中这一项还存在,那么下次再安装时,Drupal会误认为此模块已存在,而造成安装不能正常进行。解决的办法,通过MySQL/PHPMyadmin把相关项删除:

DELETE FROM system WHERE name = 'modulename';
//modulename就是您要卸载的模块名称

开启了有问题的模块而无法回到管理页面去关闭它,怎么办?

当在试用或者测试一些模块时,如果模块有问题,可能会造成页面显示为一个空白页面,而使你无法回到模块管理页面去关闭它。这时候通常有两个办法可以解决:

1. 通过ftp删除这个有问题的模块;
或者
2. 直接进行下面的数据库操作:


UPDATE `system` SET `status` = '0' WHERE `name` = 'module_name' LIMIT 1;

这之后你应该可以访问模块管理页面来关闭它了。

站点设置为维护状态时如何登录管理

从4.7开始可以在 管理>>设置 里可以将你的站点设置为"维护状态",这时用户将只能看到"站点维护中"的页面,也无法登陆。作为管理员,你还是可以同过下面这个链接登陆进去修改设置:

www.example.com/?q=user

最好使用第一个用户(uid=1)作为管理员登录,其他的管理员账号可能并没有"管理站点设置"的权限,并可能造成你无法退出的情况。这时候就必须清除浏览器缓存,再访问上面的链接,然后使用有正确权限的管理员账号登录。

作为最后一招,你还可以直接更改数据库来接触站点的"维护状态":

UPDATE variable SET value = 's:1:"0";' WHERE name= 'site_offline';