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.

Était-ce utile?

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=???;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top