我不太确定是否由于尝试执行以下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' ;"
在bash命令行上并得到此错误
ERROR 1148 (42000) at line 1: The used command is not allowed with this MySQL version
我该如何解决此问题?
我实际上是从Python程序运行此命令,但将其拉出以尝试在bash命令行上摆弄它。
我已经看到了如何修改my.cnf(本地文件),但是如果可以避免的话,我不希望对全局进行更改。
这是MySQL版本。
mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (i686) using readline 6.2
如“ 安全问题”中所述LOAD DATA LOCAL:
LOAD DATA LOCAL
为了解决这些问题,我们更改了LOAD DATA LOCAL从MySQL 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除非明确将它编写为invoke,否则任何客户端都不能使用它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-前缀指定它: [客户] Pine-local-infile = 1 如果LOAD DATA LOCAL在服务器或客户端中被禁用,则尝试发出此类语句的客户端将收到以下错误消息: ERROR 1148: The used command is not allowed with this MySQL version
为了解决这些问题,我们更改了LOAD DATA LOCAL从MySQL 3.23.49和MySQL 4.0.2(在Windows为4.0.13)开始的处理方式:
默认情况下,所有二进制分发版本的MySQL客户端和库都使用该--enable-local-infile选项进行编译,以与MySQL 3.23.48及更低版本兼容。
--enable-local-infile
如果您从源代码构建MySQL,但不使用该--enable-local-infile选项调用configure,那么LOAD DATA LOCAL除非明确将它编写为invoke,否则任何客户端都不能使用它mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0)。参见第20.6.6.49节“ mysql_options()”。
mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0)
mysql_options()
您可以LOAD DATA LOCAL通过使用选项启动mysqld来禁用服务器端的所有语句--local- infile=0。
--local- infile=0
对于mysql命令行客户端,LOAD DATA LOCAL通过指定--local-infile[=1]选项启用,或使用--local- infile=0选项禁用它。对于mysqlimport,默认情况下关闭本地数据文件加载;使用--local或-L选项启用它。无论如何,成功使用本地加载操作都需要服务器允许它。
--local-infile[=1]
--local
-L
如果LOAD DATA LOCAL在Perl脚本或其他[client]从选项文件中读取该组的程序中使用,则可以将local- infile=1选项添加到该组中。但是,为了防止这种情况对不了解的程序造成问题,请local-infile使用loose-前缀指定它:
[client]
local- infile=1
local-infile
loose-
[客户] Pine-local-infile = 1
[客户]
Pine-local-infile = 1
如果LOAD DATA LOCAL在服务器或客户端中被禁用,则尝试发出此类语句的客户端将收到以下错误消息:
ERROR 1148: The used command is not allowed with this MySQL version