如何更正MySQL加载错误

oct*_*bus 25 mysql csv import load local

我不太确定类似的问题是由于我试图执行以下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' ;"
Run Code Online (Sandbox Code Playgroud)

在bash命令行中获取此错误

ERROR 1148 (42000) at line 1: The used command is not allowed with this MySQL version

我该如何解决这个问题?

我实际上是从Python程序运行此命令,但是在bash命令行中尝试使用它来取消命令.

我已经看到了如何修改my.cnf(local-infile),但如果我能避免它,我不希望全局变化.

这是MySQL版本.

mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (i686) using readline 6.2

oct*_*bus 48

解决方法是修改命令行mysql -e以传入--local-infile=1参数,如下所示:

mysql --local-infile=1 -u username -p `
Run Code Online (Sandbox Code Playgroud)

然后LOAD DATA LOCAL INFILE再次运行该命令.


egg*_*yal 31

安全问题中所述LOAD DATA LOCAL:

为了解决这些问题,我们改变了LOAD DATA LOCALMySQL 3.23.49和MySQL 4.0.2(Windows上4.0.13)的处理方式:

  • 默认情况下,二进制发行版中的所有MySQL客户端和库都使用该--enable-local-infile选项进行编译,以便与之前的MySQL 3.23.48兼容.

  • 如果您从源构建MySQL但不使用该--enable-local-infile选项调用configure,则LOAD DATA LOCAL除非明确写入调用,否则任何客户端都不能使用它mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0).见第20.6.6.49节" mysql_options()".

  • 您可以LOAD DATA LOCAL通过使用该选项启动mysqld来禁用服务器端的所有语句--local-infile=0.

  • 对于mysql命令行客户端,LOAD DATA LOCAL通过指定--local-infile[=1]选项启用,或使用该--local-infile=0选项禁用它.对于mysqlimport,默认情况下本地数据文件加载是关闭的; 使用--local-L选项启用它.在任何情况下,成功使用本地加载操作都需要服务器允许它.

  • 如果您LOAD DATA LOCAL在Perl脚本或[client]从选项文件中读取组的其他程序中使用,则可以将该local-infile=1选项添加到该组.但是,为了避免对不理解的程序造成问题,请local-infile使用loose-前缀指定它:

    [client]
    loose-local-infile=1
    
  • 如果LOAD DATA LOCAL在服务器或客户端中禁用,则尝试发出此类语句的客户端会收到以下错误消息:

    ERROR 1148: The used command is not allowed with this MySQL version


Zen*_*xer 8

local-infile需要在服务器和客户端上启用.您可以通过添加local-infile = 1到每个端点my.cnf(Unix)或my.ini(Windows)文件中的相应部分来完成此操作.例如,在客户端上:

[client]
local-infile = 1
Run Code Online (Sandbox Code Playgroud)

您还可以通过设置系统变量在服务器上的运行时启用此功能local_infile:

SET GLOBAL local_infile=1;
Run Code Online (Sandbox Code Playgroud)

但是,您仍需要在客户端上启用它.您可以在运行时通过向命令添加命令行参数来mysql执行此操作:

mysql --local-infile=1 ...
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Amazon Web Services RDS,则可以通过编辑或创建参数组来配置服务器设置.寻找local_infile参数.应用更改后,您可能需要重新启动服务器.