小编典典

我该如何纠正MySQL加载错误

mysql

我不太确定是否由于尝试执行以下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


阅读 200

收藏
2020-05-17

共1个答案

小编典典

如“ 安全问题”中所述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

2020-05-17