我正在運行MySQL我的Ubuntu機器。我檢查/etc/mysql/my.cnf
文件,它表明我的數據庫臨時目錄:LOAD DATA INFILE不起作用
...
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
...
,因爲它表明,我的MySQL服務器臨時目錄/tmp
。
我有一個students.dat
文件,這個文件的內容是類似以下內容:
...
30 kate name
31 John name
32 Bill name
33 Job name
...
我複製了上述students.dat
文件/tmp
目錄。然後,我運行下面的命令從students.dat
文件中的數據加載到學生表在我的數據庫:
LOAD DATA INFILE '/tmp/students.dat'
INTO TABLE school_db.students
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
(student_id, name, attribute)
但我在MySQL控制檯中的錯誤消息:
ERROR 29 (HY000): File '/tmp/students.dat' not found (Errcode: 13)
爲什麼mysql找不到students.dat
文件雖然文件在mysql臨時目錄下?
P.S.
的學生表就像以下(目前已經有4個表中的記錄之前運行LOAD DATA INFILE...
查詢):
mysql> describe students;
+-------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| student_id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | MUL | NULL | |
| attribute | varchar(12) | YES | MUL | NULL | |
| teacher_id | int(11) | YES | | NULL | |
+-------------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
'LOCAL INFILE'是一種解決方法。使用它的解決方案可能是將文件所有權更改爲'mysql'的文件所有權。或者,我有兩個相同的MySQL服務器和客戶端安裝,並且支持一個常規的'LOAD DATA INFILE'。唯一的區別是MySQL的'/ var/lib/mysql'與'/ tmp /'不在一個分區上 –