Pregunta

Estoy desarrollando Rieles v2.3.2 con Mysql v5.1 en Ubuntu máquina.

Mysql El directorio de datos es /var/lib/mysql/

tengo un test.dat archivo ubicado en /var/lib/mysql/tmp/test.dat

Me gustaría cargar datos del test.dat Archivo en la tabla de mi base de datos, por lo que ejecuto la siguiente instrucción SQL en una de mis tarea de rastrillo:

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

Pero recibí el siguiente error:

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

¿¿Cuál podría ser la razón??

PD Una cosa me viene a la mente es que /var/lib/mysql/ solo se puede acceder por Usuario de raíz, pero no estoy seguro de si es la razón.

¿Fue útil?

Solución

Probar LOAD DATA LOCAL INFILE ....

Otros consejos

Como menciona el .dat tiene permiso de acceso a la raíz,
cambiarlo a 644 podría ayudar

O verifique la cuenta de usuario que conectar MySQL en Ruby tiene los privilegios de archivo

select File_priv from mysql.user where Host=??? and user=???;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top