Fehler beim Ausführen von SQL -Anweisung
-
25-10-2019 - |
Frage
Ich entwickle mich Schienen v2.3.2 mit Mysql v5.1 an Ubuntu Maschine.
Mysql Datenverzeichnis ist /var/lib/mysql/
Ich habe ein test.dat
Datei befindet sich auf /var/lib/mysql/tmp/test.dat
Ich möchte Daten aus dem laden test.dat
Datei in meine Datenbanktabelle, daher führe ich die folgende SQL -Anweisung in einem meiner aus Rake -Aufgabe:
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
Aber ich habe den folgenden Fehler bekommen:
Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat
'
Was könnte der Grund sein?
Ps Eine Sache, die mir in den Sinn kommt, ist das /var/lib/mysql/
kann nur von zugegriffen werden von Root -Benutzer, aber ich bin mir nicht sicher, ob es der Grund ist.
Lösung
Versuchen LOAD DATA LOCAL INFILE ...
.
Andere Tipps
Wie Sie erwähnen, hat die .dat Root Access -Berechtigung,
Ändern Sie es auf 644, könnte helfen
Oder überprüfen Sie das Benutzerkonto, das MySQL in Ruby verbindet
select File_priv from mysql.user where Host=??? and user=???;