2016-01-13 64 views
2

我已經安裝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).

我怎樣才能解決這個問題?

+0

給在/ tmp目錄mysqld的寫權限。通常這個目錄對每個人都是可寫的,如果你的系統使用selinux這可能是一個問題。 –

+0

我已經爲/ tmp文件夾提供了完整的寫入權限。但它仍然顯示相同的錯誤。 – satheesh

回答

1

您應該在觸發「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

完成!

嘗試刷新頁面。

0

首先,檢查df -h如果存儲設備接近滿,如果是這樣的話,那麼你需要釋放一些空間。

刪除舊的數據庫可能的解決方案,但如果你沒有看到清洗後在自由空間的變化,那麼你需要做到以下幾點:

有一些MySQL的配置在一個共同的問題所有數據庫都存儲在一個名爲ibdata1的文件中。發生什麼是當你刪除舊的數據庫這個文件確實不是自動縮小。

檢查/var/lib/mysql/中文件的大小,如果在刪除一些舊數據庫後發現ibdata1大小沒有更改,則需要進行一些清理。

步驟:

  1. 備份你的數據庫
  2. 刪除你的數據庫
  3. 使用rm /var/lib/mysql/ibdata1
  4. 使用rm /var/lib/mysql/ib_logfile*
  5. 重啓MySQL刪除ib_logfile(S)刪除ibdata1中與service mysql restart
  6. 進口備份的數據庫。

現在,應該有足夠的空間來爲/tmp增長和執行您的查詢!

祝你好運!

注:

有關淨化參觀約翰·普的答案在這裏更多的細節:https://stackoverflow.com/a/3456885/2188595