ЗАГРУЗКА ДАННЫХ INFILE не работает - PullRequest
7 голосов
/ 12 декабря 2011

Я использую MySQL на моей Ubuntu машине. Я проверил /etc/mysql/my.cnf файл, он показывает временный каталог моей базы данных:

...
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)

Ответы [ 2 ]

10 голосов
/ 12 декабря 2011

Посмотрите на шестой пост из файл не найден ошибка .Кажется, если вы укажете LOAD DATA LOCAL INFILE должно работать (они добавили ключевое слово LOCAL)

2 голосов
/ 21 июня 2013

ERROR 29 (HY000): File '/tmp/file_name' not found (Errcode: 13)

Эта ошибка возникает главным образом, когда мы пытаемся загрузить файл данных из любого места в любую таблицу в базе данных mysql.

Просто смените владельца файла.

1) Проверьте права доступа к файлу с помощью этой команды: ls -lhrt <filename>

2) Затем смените владельца: chown mysql.mysql <filename>

3) Теперь попробуйте команду LOAD DATA INFILE. Это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...