我已经安装了访问者模块Drupal 7。我使用www.domain.com/visiters查看了这些报告。所有报告都运行良好。但当我查看用户活动报告时,它显示以下错误。
PDOException:SQLSTATE[HY000]:一般错误:3写入文件时出错"/tmp/MYHKgYpv"(错误代码:28):选择u.name AS名称,u.uid AS uid,COUNT(DISTINCT v.visitors_id)作为命中、COUNT,COUNT(DISTINCT c.cid)作为{users}u的注释LEFT OUTER JOIN{visiters}v ON u.uid=v.visiters_uid LEFT OUTER JOIN{node}n ONu.uid=n.uid LEFT OUTER JOIN{comment}c ON u.uid=cuid WHERE(访问者日期时间介于:db_condition_placeholder_0与:db_condition_placeholder_1)按u.name、u.uid、v.vistors_uid分组,n.uid,c.uid ORDER BY命中DESC LIMIT 10 OFFSET 0;阵列([:db_condition_placeholder_0]=>1451606400[:db_condition_placeholder_1]=>1452556799)PagerDefault->execute()(第79行,共79行/home/legalmon/public_html/includs/pager.inc)
如何解决此问题?
您应该在触发";用户报告查询";。
如果/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
检查存储设备是否已接近满,如果是这样,则需要释放一些空间。
删除旧数据库可能是解决方案,但如果清除后您没有看到可用空间的变化,则需要执行以下操作:
一些MySQL配置存在一个常见问题,即所有数据库都存储在一个名为ibdata1
的文件中。结果是,当您删除旧数据库时,该文件不会自动收缩。
检查/var/lib/mysql/
中文件的大小,如果您发现ibdata1
的大小在删除一些旧数据库后没有改变,那么您需要进行一些清理。
步骤:
- 备份您的数据库
- 删除数据库
- 使用
rm /var/lib/mysql/ibdata1
删除ibdata1 - 使用
rm /var/lib/mysql/ib_logfile*
删除ib_logfile - 用
service mysql restart
重新启动MySQL - 导入备份的数据库
现在,/tmp
应该有足够的空间来增长和执行您的查询!
祝你好运!
注意:
有关清除的更多详细信息,请访问John p的答案:https://stackoverflow.com/a/3456885/2188595