PDOException:SQLSTATE [HY000]:一般错误:3写入文件错误'/ tmp/MYHKgYpv'(Errcode:28)
我已经安装Visitor模块Drupal 7.我已经使用www.domain.com/visitors查看报告。所有的报告都运作良好。但是当我查看用户活动报告时,它显示下面的错误。PDOException:SQLSTATE [HY000]:一般错误:3写入文件错误'/ tmp/MYHKgYpv'(Errcode:28)
PDOException: SQLSTATE[HY000]: General error: 3 Error writing file '/tmp/MYHKgYpv' (Errcode: 28): SELECT u.name AS name, u.uid AS uid, COUNT(DISTINCT v.visitors_id) AS hits, COUNT(DISTINCT n.nid) AS nodes, COUNT(DISTINCT c.cid) AS comments FROM {users} u LEFT OUTER JOIN {visitors} 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 (visitors_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 hits DESC LIMIT 10 OFFSET 0; Array ( [:db_condition_placeholder_0] => 1451606400 [:db_condition_placeholder_1] => 1452556799) in PagerDefault->execute() (line 79 of /home/legalmon/public_html/includes/pager.inc).
我怎样才能解决这个问题?
您应该在触发“USER REPORT查询”时不断检查/ tmp文件夹大小。
如果/ tmp目录被100%利用,您会遇到此错误。
解决方案是将一些GB挂载到/ tmp目录或设置MySQL tmp的新位置。
要建立新的位置:
创建一个目录,任何地方,你有足够的空间(可以是 “/” 根目录)
的mkdir /家庭/ mysqltmp
给写权限
搭配chmod 1777 /家庭/ mysqltmp
打开my.cnf文件
/etc/my.cnf中下方添加线下的[mysqld]部分和保存文件
TMPDIR = /家庭/ mysqltmp
重启MySQL
的/ etc /初始化。 d/mysql重启
检查新位置
mysqladmin var | grep tmpdir
这应显示以下返回。
| slave_load_tmpdir |/home/mysqltmp | tmpdir |/home/mysqltmp
完成!
尝试刷新页面。
首先,检查df -h
如果存储设备接近满,如果是这样的话,那么你需要释放一些空间。
删除旧的数据库可能的解决方案,但如果你没有看到清洗后在*空间的变化,那么你需要做到以下几点:
有一些MySQL的配置在一个共同的问题所有数据库都存储在一个名为ibdata1
的文件中。发生什么是当你删除旧的数据库这个文件确实不是自动缩小。
检查/var/lib/mysql/
中文件的大小,如果在删除一些旧数据库后发现ibdata1
大小没有更改,则需要进行一些清理。
步骤:
- 备份你的数据库
- 删除你的数据库
- 使用
rm /var/lib/mysql/ibdata1
- 使用
rm /var/lib/mysql/ib_logfile*
- 重启MySQL删除ib_logfile(S)删除ibdata1中与
service mysql restart
- 进口备份的数据库。
现在,应该有足够的空间来为/tmp
增长和执行您的查询!
祝你好运!
注:
有关净化参观约翰·普的答案在这里更多的细节:https://*.com/a/3456885/2188595
给在/ tmp目录mysqld的写权限。通常这个目录对每个人都是可写的,如果你的系统使用selinux这可能是一个问题。 –
我已经为/ tmp文件夹提供了完整的写入权限。但它仍然显示相同的错误。 – satheesh