Cómo puedo corregir el Error de Carga de MySQL
No estoy muy seguro de que una pregunta similar a esta fue cerrada por estoy tratando de ejecutar el siguiente programa MySQL.
mysql -e "load data local infile \
'/tmp/ept_inventory_wasp_export_04292013.csv' into \
table wasp_ept_inv fields terminated by ',' \
lines terminated by '\n' ;"
En la línea de comandos de bash y obtener este error
ERROR 1148 (42000) at line 1: The used command is not allowed with this MySQL version
¿Cómo puedo solucionar este problema?
En realidad estoy ejecutando este comando desde un programa Python, pero saqué el comando para intentar juguetear con él en la línea de comandos bash.
He visto cómo puedo modificar mi.cnf (local-infile), pero no quiero que global un cambio si puede evitarlo.
Aquí está la versión de MySQL.
mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (i686) using readline 6.2
4 answers
Como se documenta en Problemas de seguridad con LOAD DATA LOCAL
:
Para lidiar con estos problemas, cambiamos cómo
LOAD DATA LOCAL
se maneja a partir de MySQL 3.23.49 y MySQL 4.0.2 (4.0.13 en Windows):
Por defecto, todos los clientes y bibliotecas MySQL en distribuciones binarias se compilan con la opción
--enable-local-infile
, para ser compatibles con MySQL 3.23.48 y anteriores.Si compila MySQL desde el código fuente pero no invoca configure con el
--enable-local-infile
opción,LOAD DATA LOCAL
no puede ser utilizado por ningún cliente a menos que esté escrito explícitamente para invocarmysql_options(... MYSQL_OPT_LOCAL_INFILE, 0)
. Ver la sección 20.6.6.49, "mysql_options()
".Puede deshabilitar todos
LOAD DATA LOCAL
declaraciones desde el lado del servidor por partida mysqld con el--local-infile=0
opción.Para el cliente de línea de comandos mysql, habilite
LOAD DATA LOCAL
especificando--local-infile[=1]
opción, o deshabilitarlo con el--local-infile=0
opción. Para mysqlimport , la carga de archivos de datos locales está desactivada de forma predeterminada; habilítela con--local
o la opción-L
. En cualquier caso, el uso exitoso de una operación de carga local requiere que el servidor lo permita.Si usa
LOAD DATA LOCAL
en scripts de Perl u otros programas que lean el grupo[client]
desde archivos de opciones, puede agregar la opciónlocal-infile=1
a ese grupo. Sin embargo, para evitar que esto cause problemas a los programas que no entiendelocal-infile
, especifícalo usando el prefijoloose-
:[client] loose-local-infile=1Si
LOAD DATA LOCAL
está deshabilitado, ya sea en el servidor o en el cliente, un cliente que intenta emitir una declaración de este tipo recibe el siguiente mensaje de error:
ERROR 1148: The used command is not allowed with this MySQL version
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-29 18:50:05
La solución es modificar la línea de comandos mysql -e
en el --local-infile=1
argumento como este:
mysql --local-infile=1 -u username -p `
Luego ejecute el comando LOAD DATA LOCAL INFILE
de nuevo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-03 21:56:33
local-infile
necesita habilitarse tanto en el servidor como en el cliente. Puede lograr esto agregando local-infile = 1
a la sección apropiada en el archivo my.cnf
(Unix) o my.ini
(Windows) de cada extremo. Por ejemplo, en el cliente:
[client]
local-infile = 1
También puede habilitar esto en tiempo de ejecución en el servidor configurando la variable de sistema local_infile
:
SET GLOBAL local_infile=1;
Sin embargo, todavía necesita habilitarlo en el cliente. Puede hacer esto en tiempo de ejecución agregando un parámetro de línea de comandos a mysql
orden:
mysql --local-infile=1 ...
Si utiliza Amazon Web Services RDS, puede configurar la configuración del servidor editando o creando un grupo de parámetros. Busque el parámetro local_infile
. Es posible que tenga que reiniciar el servidor después de aplicar los cambios.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-02 04:19:38
Mi conjetura es que su servidor MySQL no tiene LOAD DATA LOCAL
activado. Consulte esta sección de la documentación de MySQL:
Si LOAD DATA LOCAL está deshabilitado, ya sea en el servidor o en el cliente, un cliente que intente emitir dicha instrucción recibirá el siguiente mensaje de error:
ERROR 1148: El comando utilizado no está permitido con esta versión de MySQL
Aquí está el enlace a la página que conseguí esto de:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-29 18:50:26