PDOException: SQLSTATE[HY000]: General error: 3 Error writing file '/tmp/MYHKgYpv' (Errcode: 28)
PDOException: SQLSTATE[HY000]: General error: 3 Error writing file '/tmp/MYHKgYpv' (Errcode: 28)
我已经安装了 Visitor 模块 Drupal 7。我已经使用 www.domain.com/visitors 查看了报告。所有报告都运作良好。但是当我查看用户 activity 报告时,它显示以下错误。
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 的新位置。
要设置新位置:
Create a directory anywhere you have enough space(can be the "/" root directory)
# mkdir /home/mysqltmp
Give write permissions
# chmod 1777 /home/mysqltmp
Open MY.CNF File
# /etc/my.cnf
Add below line under the [mysqld] section and save the file
# tmpdir=/home/mysqltmp
Restart MySQL
# /etc/init.d/mysql restart
Check new location
# mysqladmin var | grep tmpdir
This should show following return.
| slave_load_tmpdir | /home/mysqltmp
| tmpdir | /home/mysqltmp
完成!!
尝试刷新页面。
首先,检查 df -h
存储设备是否快满了,如果是这样,那么您需要释放一些 space。
删除旧数据库可能是解决方案,但如果您在清除后没有看到免费 space 发生变化,那么您需要执行以下操作:
一些 MySQL 配置存在一个常见问题,其中所有数据库都存储在一个名为 ibdata1
的文件中。发生的情况是,当您删除旧数据库时,此文件 不会 自动收缩。
检查 /var/lib/mysql/
中文件的大小,如果您发现 ibdata1
大小在删除一些旧数据库后没有改变,那么您需要做一些清理工作。
步骤:
- 备份您的数据库
- 删除您的数据库
- 删除 ibdata1 使用
rm /var/lib/mysql/ibdata1
- 使用
rm /var/lib/mysql/ib_logfile*
删除 ib_logfile(s)
- 用
service mysql restart
重新启动 MySQL
- 导入备份的数据库。
现在,/tmp
应该有足够的 space 来增长和执行您的查询!
祝你好运!
备注:
有关清除的更多详细信息,请在此处访问 John P 的回答:
我已经安装了 Visitor 模块 Drupal 7。我已经使用 www.domain.com/visitors 查看了报告。所有报告都运作良好。但是当我查看用户 activity 报告时,它显示以下错误。
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 的新位置。
要设置新位置:
Create a directory anywhere you have enough space(can be the "/" root directory)
# mkdir /home/mysqltmp
Give write permissions
# chmod 1777 /home/mysqltmp
Open MY.CNF File
# /etc/my.cnf
Add below line under the [mysqld] section and save the file
# tmpdir=/home/mysqltmp
Restart MySQL
# /etc/init.d/mysql restart
Check new location
# mysqladmin var | grep tmpdir
This should show following return.
| slave_load_tmpdir | /home/mysqltmp
| tmpdir | /home/mysqltmp
完成!!
尝试刷新页面。
首先,检查 df -h
存储设备是否快满了,如果是这样,那么您需要释放一些 space。
删除旧数据库可能是解决方案,但如果您在清除后没有看到免费 space 发生变化,那么您需要执行以下操作:
一些 MySQL 配置存在一个常见问题,其中所有数据库都存储在一个名为 ibdata1
的文件中。发生的情况是,当您删除旧数据库时,此文件 不会 自动收缩。
检查 /var/lib/mysql/
中文件的大小,如果您发现 ibdata1
大小在删除一些旧数据库后没有改变,那么您需要做一些清理工作。
步骤:
- 备份您的数据库
- 删除您的数据库
- 删除 ibdata1 使用
rm /var/lib/mysql/ibdata1
- 使用
rm /var/lib/mysql/ib_logfile*
删除 ib_logfile(s)
- 用
service mysql restart
重新启动 MySQL
- 导入备份的数据库。
现在,/tmp
应该有足够的 space 来增长和执行您的查询!
祝你好运!
备注:
有关清除的更多详细信息,请在此处访问 John P 的回答: