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.

War es hilfreich?

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=???;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top