1. 程式人生 > >MySQL下“Can’t create/write to file xxx (Errcode: 13)”錯誤的解決方法

MySQL下“Can’t create/write to file xxx (Errcode: 13)”錯誤的解決方法

最近碰到一個 MySQL不能建立臨時檔案的錯誤,解決過程中學到一些知識,這裡分享一下,希望對碰到類似問題的同學有所幫助~

關於MySQL臨時檔案:


1、MySQL使用環境變數TMPDIR的值作為儲存臨時檔案的目錄的路徑名。如果未設定TMPDIR,MySQL將 使用系統的預設值,通常為/tmp、/var/tmp或/usr/tmp。
2、MySQL會以隱含方式建立所有的臨時檔案。這樣,就能確保中止mysqld時 會刪除所有臨時檔案。
3、 進行排序時(ORDER BY或GROUP BY),MySQL通 常會使用1個或多個臨時檔案。
4、對於某些SELECT查 詢,MySQL還會建立臨時SQL表。 它們不是隱含表,並具有SQL_*形 式的名稱。


分析問題:


如果某些查詢遇 到”Can’t create/write to file xxx (Errcode: 13)“型別的錯誤,它意味著MySQL不能為臨時 目錄下的結果集建立臨時 檔案。
Google查詢得知以下三種情況可能會導致此問題:


①、%TMPDIR% 資料夾許可權不夠。
②、%TMPDIR% 資料夾的磁碟滿了,檔案寫不 進去了,清空 TEMP 資料夾;
③、第三方限制(如防毒軟體的限制)

解決方法:


方法一、在my.inip配置檔案中查詢”[mysqld]“,在其下新增一行:
tmpdir=%你想指定的MySQL臨時檔案目錄(例如 D:temp)%
方法二、如果機器上裝了防毒軟體,可以嘗試排除對臨時檔案的掃描。
360防毒(已測試過):
設定—>>>白名單設定—>>>新增目錄—>>>%TMPDIR%–>>> 確定。
麥咖啡(網上資訊,未親自測試 過):
開啟McAfee VirusScan控制檯->按訪問掃描程式->屬性->所有程序->檢測項->排除項->新增%TMPDIR%,排除時間選擇讀取時寫入時。

資源:


Can’t create/write to file …解決方法—-hi.baidu.com/%D3%B2%BA%BA%D6%DD%B3%A4/blog/item/42166e9bccbb97bfc9eaf4ca.html

A.4.4. MySQL將臨時檔案儲存在哪裡—dev.mysql.com/doc/refman/5.1/zh/problems.html#temporary-files

A.2.12. 無法建立檔案/寫入檔案—dev.mysql.com/doc/refman/5.1/zh/problems.html#cannot-create

MySQL更多問題—dev.mysql.com/doc/refman/5.1/zh/problems.html

修改方法

下面介紹兩種MySQL修復表的方法。

1. myisamchk

使用myisamchk必須暫時停止MySQL 伺服器。例如,我們要檢修blog資料庫。執行以下操作:

# service mysql stop (停止MySQL)
# myisamchk -r /datawhere/blog/*MYI
# service mysql start myisamchk 會自動檢查並修復資料表中的索引錯誤。

2. mysqlcheck

使用mysqlcheck無需停止MySQL,可以進行熱修復。操作步驟如下:(檢修 blog庫)

# mysqlcheck -r -uroot -p blog

注意,無論是 myisamchk還是mysqlcheck,一般情況下不要使用-f強制修復,-f引數會在遇到一般修復無法成功的時候刪除 
部分出錯資料以嘗試修復。所以,不到萬不得已不要使用-f。

如果你怕使用命令有問題,可以使用phpmyadmin直接進行修復哦

相關推薦

MySQLCant create/write to file xxx (Errcode: 13)”錯誤解決方法

最近碰到一個 MySQL不能建立臨時檔案的錯誤,解決過程中學到一些知識,這裡分享一下,希望對碰到類似問題的同學有所幫助~ 關於MySQL臨時檔案: 1、MySQL使用環境變數TMPDIR的值作為儲存臨時檔案的目錄的路徑名。如果未設定TMPDIR,MySQL將 使

解決MYSQL出現Can't create/write to file....

今天我上網站的管理後臺,登入時提示 出現這個問題是由於伺服器環境不允許執行資料庫校驗,無法進行此操作。一般是由於以下原因造成的: 1、許可權問題: /tmp 許可權不夠,最少要給出USERS組的可讀可寫許可權、要不就給everyone許可權也可以(chmod -R

解決:CentOSMySQL執行select ... into outfile ...: Can't create/write to file '...' (Errcode: 13)

原因:selinux阻止寫入操作 解決:vi /etc/selinux/config # This file controls the state of SELinux on the system.

mysql報錯! Can't create/write to file '/tmp/#sql_c62_0.MYI' (Errcode: 17

轉載自:https://blog.csdn.net/mchdba/article/details/52122724同事連線資料庫,查詢資料報錯了,Can't create/write to file '/tmp/#sql_89b_0.MYI'  (Errcode: 177 -

記一次修復mysq啟動/usr/local/mysql/bin/mysqld: Can't create/write to file '/home/data/logs/mysql/mysqld.pid

重啟系統後,mysql啟動不了[[email protected] ~]# systemctl start mysqld Job for mysqld.service failed becau

ERROR 1 (HY000): Cant create/write to file ‘/data

mariadb 數據導出 使用非DBA用戶進行load data 操作,發現報錯。MariaDB [temp_archive]> select * from t1 into outfile '/data/test.sql';ERROR 1 (HY000): Can't c

java.sql.SQLException: Can't create/write to file '/root/apache-tomcat-7.0.42/webapps/AnationtSystem

java.sql.SQLException: Can’t get stat of ‘/root/apache-tomcat-7.0.42/webapps/AnationtSystem/upload/20180720093527_general.txt’ (Err

Can't create/write to file '/tmp/MLjnvU95' (Errcode: 13

mysql> show variables like 'tmpdir';+---------------+-------+| Variable_name | Value |+---------------+-------+| tmpdir        | /tmp  |+---------------

mysql啟動報can't create/write to file 'var/run/mysqld/mysqld.pid 錯誤解決辦法

msql啟動報錯,啟動不了。 進入mysql日誌預設的路徑為 /var/log/mysqld.log 檢視日誌,發現報錯資訊如下: can't create/write to file 'var/run/mysqld/mysqld.pid 解決辦法: 將 /var/run/my

mysql 啟動報錯 /usr/local/mysql//libexec/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid'

centos檢視mysql日誌路徑:/var/log/mysqld.log 可能日誌過長,導致命令視窗檢視不方便,可以下載到本地,檢視ERROR   啟動mysql systemctl start mysqld 命令報錯看不出具體啟動失敗的原因,檢視日誌後發現如下錯誤:

can't find referenced class okhttp3.internal.http.HttpEngine錯誤解決

工程build apk時報錯 Error:11:23:00.724 [ERROR] [system.err] Warning: okhttp3.logging.HttpLoggingInterce

mysql普通使用者備份資料庫時無lock tables許可權的解決方法

由於  我們正式伺服器上面mysql的root賬戶設定的只允許localhost登入mysql, 但是備份是在我自己的開發的電腦上,就造成了 普通使用者使用mysqldump命令無法備份sql  會報

'./mysql-bin.index' not found (Errcode: 13) 的解決方法

【轉自】http://blog.haohtml.com/archives/9202今天突然收到訊息機房的一臺伺服器的mysql無法啟動了,首先檢查了一下mysql的錯誤日誌,發現最後出現以下錯誤:020101 00:42:21  mysqld started/usr/loca

File already exists: filesystem '/path/file', transaction svn常見錯誤解決方法

前言   多人任務基本都會用到SVN,於是提交的時候如果不先更新在提交或者操作順序不對,會經常出現錯誤,其中File already exists: filesystem這個就是個常見問題,上網找了半天沒找到解決辦法,經過摸索,經解決辦法分享於此。 解決方法   不同情況

Navicat for MySQL 新建查詢時,報can't create file ...系統找不到指定的資料夾出現問題

搞了近1.5小時,在快要放棄Navicat for mysql工具, 打算轉用MySQL workBench 時,轉機出現了,突發奇想,改動了一下,居然居然可以新建查詢了….. 有一段時間,沒有在自己的PC上使用Navicat for Mysql這個工具了。今

LinuxMySql出現Cant connect to local MySQL server through socket

今天在維護Linux伺服器的時候,重啟了Linux伺服器之後發現mysql無法登入,輸入以下命令: <span style="font-size:14px;"># mysql -u root -p</span>之後,終端給出提示: <span

連接Mysql提示Cant connect to local MySQL server through socket的解決方法

127.0.0.1 方式 mic div conn 三種 問題 ati my.cnf 轉:http://aiezu.com/article/mysql_cant_connect_through_socket.html 有時候,當我們使用“mysql”、“mysqladmin

連線Mysql提示Cant connect to local MySQL server through socket各種情況以及解決辦法(轉載)

轉自:http://www.aiezu.com/db/mysql_cant_connect_through_socket.html 產生此問題的原因一般有兩個: 1、mysql服務未正常執行: 由於mysql的socket檔案是由mysqld服務啟動時建立的,如果mysqld服務未正常啟動,soc

連接Mysql提示Cant connect to local MySQL server through socket各種情況以及解決辦法(轉載)

文件的 字符 -o exe localhost user body external The 轉自:http://www.aiezu.com/db/mysql_cant_connect_through_socket.html 產生此問題的原因一般有兩個: 1、mysql服務

Mysql出現Cant connect to MySQL server on ‘localhost’ (0)問題

如果你的mysql在連線時提示Mysql出現Can’t connect to MySQL server on ‘localhost’ (0)問題錯誤,你就可以進來參考以下。 1、檢視一下,迴路是否指向127.0.0.1 2、刪除(在C:/windows/下)my.ini,重新執行m