errore quando un'istruzione SQL eseguito
-
25-10-2019 - |
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.
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=???;