Domanda

sto sviluppando Rails v2.3.2 con MySQL v5.1 il Ubuntu della macchina.

MySQL directory dei dati è /var/lib/mysql/

Ho un file test.dat situato sulla /var/lib/mysql/tmp/test.dat

Vorrei caricare i dati dal file test.dat nella mia tabella di database, in modo da eseguire la seguente istruzione SQL in uno dei miei task 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

Ma ho ottenuto il seguente errore:

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

Quale potrebbe essere il motivo ??

P.S. una cosa mi vengono in mente è che /var/lib/mysql/ è accessibile solo da utente root , ma non sono sicuro se è la ragione.

È stato utile?

Soluzione

Prova LOAD DATA LOCAL INFILE ....

Altri suggerimenti

Come si menziona il .dat ha permesso di accesso di root,
cambiare a 644 potrebbe aiutare

O controllare l'account utente che si collega mysql in Ruby ha i privilegi di file

select File_priv from mysql.user where Host=??? and user=???;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top