PDOException:SQLSTATE [HY000]:常规错误:3写入文件' / tmp / MYHKgYpv' (错误代码:28)

时间:2016-01-13 10:00:49

标签: php mysql drupal drupal-7

我安装了Visitor模块Drupal 7.我使用www.domain.com/visitors查看了报告。所有报告都运作良好。但是当我查看用户活动报告时,它会显示以下错误。

  

PDOException:SQLSTATE [HY000]:常规错误:3写入文件时出错   ' / TMP / MYHKgYpv' (错误代码:28):SELECT u.name AS name,u.uid AS uid,   COUNT(DISTINCT v.visitors_id)AS命中,COUNT(DISTINCT n.nid)AS节点,   COUNT(DISTINCT c.cid)AS评论来自{users} u LEFT OUTER JOIN   {visitor} v ON u.uid = v.visitors_uid LEFT OUTER JOIN {node} n ON   u.uid = n.uid LEFT OUTER JOIN {comment} c ON u.uid = c.uid WHERE   (visitor_date_time BETWEEN:db_condition_placeholder_0 AND   :db_condition_placeholder_1)GROUP BY u.name,u.uid,v.visitors_uid,   n.uid,c.uid ORDER BY点击DESC LIMIT 10 OFFSET 0;阵列(   [:db_condition_placeholder_0] => 1451606400   [:db_condition_placeholder_1] => 1452556799)in   PagerDefault-> execute()(第79行)   /home/legalmon/public_html/includes/pager.inc)。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您应该在触发" USER REPORT Query"时连续检查您的/ tmp文件夹大小。

如果/ tmp目录100%被利用,您将遇到此错误。

解决方法是将一些GB安装到/ tmp目录或设置MySQL tmp的新位置。

设置新位置:

在任何有足够空间的地方创建目录(可以是" /"根目录)

mkdir / home / mysqltmp

授予写入权限

chmod 1777 / home / mysqltmp

打开MY.CNF文件

的/etc/my.cnf

在[mysqld]部分下添加以下行并保存文件

TMPDIR = /家庭/ mysqltmp

重启MySQL

/etc/init.d/mysql restart

检查新位置

mysqladmin var | grep tmpdir

这应该在返回后显示。

| slave_load_tmpdir | /家/ mysqltmp | tmpdir | /家庭/ mysqltmp

完成!!

尝试刷新页面。

答案 1 :(得分:1)

首先,检查df -h是否存储设备​​几乎已满,如果是这种情况,那么您需要释放一些空间。

删除旧数据库可能是解决方案,但如果您在清除后没有看到可用空间发生变化,则需要执行以下操作:

某些MySQL配置存在一个常见问题,即所有数据库都存储在名为ibdata1的单个文件中。发生的情况是,当您删除旧数据库时,此文件会自动缩小。

检查/var/lib/mysql/中文件的大小,如果在删除某些旧数据库后发现ibdata1大小没有变化,则需要进行一些清理。

步骤:

  1. 备份您的数据库
  2. 删除数据库
  3. 使用rm /var/lib/mysql/ibdata1
  4. 删除ibdata1
  5. 使用rm /var/lib/mysql/ib_logfile*
  6. 删除ib_logfile
  7. 使用service mysql restart
  8. 重启MySQL
  9. 导入备份的数据库。
  10. 现在,/tmp应该有足够的空间来增长和执行您的查询!

    祝你好运!

    备注:

    有关清除的详细信息,请访问John P的答案:https://stackoverflow.com/a/3456885/2188595