LOAD DATA INFILE不起作用

Mel*_*lon 7 mysql sql database

我在我的Ubuntu机器上运行MySQL.我检查了文件,它显示了我的数据库临时目录:/etc/mysql/my.cnf

...
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
...
Run Code Online (Sandbox Code Playgroud)

如图所示,我的MySQL服务器临时目录是/tmp.

我有一个students.dat文件,这个文件的内容如下:

...
30  kate    name
31  John    name
32  Bill    name
33  Job     name
...
Run Code Online (Sandbox Code Playgroud)

我将上面的students.dat文件复制到/tmp目录.然后,我运行以下命令将数据从students.dat文件加载到我的数据库中的students表:

LOAD DATA INFILE '/tmp/students.dat'
            INTO TABLE school_db.students
            FIELDS TERMINATED BY '\t'
            LINES TERMINATED BY '\n'
            (student_id, name, attribute)
Run Code Online (Sandbox Code Playgroud)

但是我在MySQL控制台中收到了错误消息:

ERROR 29 (HY000): File '/tmp/students.dat' not found (Errcode: 13)
Run Code Online (Sandbox Code Playgroud)

为什么MySQL不能找到students.dat文件,但该文件是mysql的临时目录下?

PS

学生表就像以下(目前已经有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)
Run Code Online (Sandbox Code Playgroud)

cri*_*ian 10

看看文件找不到错误的第六篇文章.似乎你指定LOAD DATA LOCAL INFILE应该工作(他们添加了LOCAL关键字)