ошибка при запуске оператора SQL - PullRequest
1 голос
/ 29 ноября 2011

Я разрабатываю Rails v2.3.2 с MySQL v5.1 на Ubuntu машина.

MySQL каталог данных /var/lib/mysql/

У меня есть файл test.dat, расположенный на /var/lib/mysql/tmp/test.dat

Я хотел бы загрузить данные из файла test.dat в свою таблицу базы данных, поэтому я выполняю следующую инструкцию SQL в одном из моих rake task :

namespace :db do
  task :do_something => :environment do

    sql="LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'
                INTO TABLE myapp.cars;"

    ActiveRecord::Base.connection.execute(sql);
  end
end

Но я получил следующую ошибку:

Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat

В чем может быть причина ??

P.S. мне приходит в голову одна вещь, что /var/lib/mysql/ может быть доступен только пользователю root , но я не уверен, является ли это причиной.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Попробуйте LOAD DATA LOCAL INFILE ....

0 голосов
/ 29 ноября 2011

Поскольку вы упоминаете, что .dat имеет разрешение root-доступа,
измените его на 644, может помочь

Или проверьте учетную запись пользователя, что подключение к mysql в ruby ​​имеет привилегии File

select File_priv from mysql.user where Host=??? and user=???;
...