Ошибка при запуске оператора SQL
-
25-10-2019 - |
Вопрос
Я развиваю Рельс 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=???;