erreur lors de l'exécution SQL déclaration
-
25-10-2019 - |
Question
Je développe Rails v2.3.2 avec MySQL v5.1 sur la machine Ubuntu .
MySQL Répertoire des données est /var/lib/mysql/
J'ai un fichier test.dat
situé sur /var/lib/mysql/tmp/test.dat
Je voudrais charger des données à partir du fichier test.dat
dans ma table de base de données, donc j'exécuter l'instruction SQL suivante dans l'un de mes tâche Rake :
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
Mais je suis l'erreur suivante:
Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat
'
Quelle pourrait être la raison ??
P.S. une chose vient à l'esprit est que /var/lib/mysql/
est uniquement accessible par utilisateur root , mais je ne suis pas sûr que ce soit la raison.
La solution
Essayez LOAD DATA LOCAL INFILE ...
.
Autres conseils
Comme vous le mentionnez le .dat a l'autorisation d'accès racine,
changer à 644 pourrait aider
Ou vérifier le compte utilisateur que la connexion mysql en Ruby a les privilèges de fichier
select File_priv from mysql.user where Host=??? and user=???;