Вопрос

Я развиваю Рельс v2.3.2 с MySQL v5.1 на Ubuntu машина.

Mysql каталог данных есть /var/lib/mysql/

у меня есть test.dat Файл расположен на /var/lib/mysql/tmp/test.dat

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

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'

Что может быть причиной??

Пса Одна вещь приходит мне в голову, это то, что /var/lib/mysql/ можно только получить доступ только к root user, но я не уверен, является ли это причиной.

Это было полезно?

Решение

Пытаться LOAD DATA LOCAL INFILE ....

Другие советы

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

Или проверьте учетную запись пользователя, что подключение MySQL в Ruby имеет привилегии файла

select File_priv from mysql.user where Host=??? and user=???;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top