如何更正MySQL加载错误

如何更正MySQL加载错误,mysql,csv,import,load,local,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' ;" 在bash命令行中,获取此错误 第1行出现错误1148(42000):此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命令行中,获取此错误

第1行出现错误1148(42000):此MySQL版本不允许使用所用命令

我如何解决这个问题

我实际上是从一个Python程序中运行这个命令,但是在bash命令行中拉出该命令来尝试处理它

我已经看到了如何修改my.cnf(local infle),但如果可以避免的话,我不希望这种全局更改

这是MySQL版本

mysql版本14.14发行版5.5.31,适用于使用readline 6.2的debian linux gnu(i686),如下所述:

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

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

  • 如果您从源代码构建MySQL,但不使用
    --enable local infle
    选项调用configure,则任何客户端都不能使用该选项,除非它被显式写入调用。看

  • 您可以从选项开始禁用服务器端的所有语句

  • 对于命令行客户端,通过指定选项启用
    LOAD DATA LOCAL
    ,或使用选项禁用它。对于,本地数据文件加载默认为关闭;使用或
    -L
    选项启用它。在任何情况下,成功使用本地加载操作都需要服务器允许

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

    [client] loose-local-infile=1 [客户] 松散局部填充=1
  • 如果在服务器或客户端中禁用,则尝试发出此类语句的客户端将收到以下错误消息:

    错误1148:此MySQL版本不允许使用所用命令


我猜您的MySQL服务器没有启用本地加载数据。请参阅MySQL文档的这一部分:

如果在服务器或客户端中禁用了LOAD DATA LOCAL,则尝试发出此类语句的客户端将收到以下错误消息:

错误1148:此MySQL版本不允许使用该命令

以下是我从中获得的页面链接:


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

mysql --local-infile=1 -u username -p `

然后再次运行
LOAD DATA LOCAL infle
命令

本地加密
需要在服务器和客户端上同时启用。您可以通过将
local infle=1
添加到每端的
my.cnf
(Unix)或
my.ini
(Windows)文件的相应部分来完成此操作。例如,在客户端上:

[client]
local-infile = 1
您还可以通过设置系统变量
local\u infle
,在服务器上运行时启用此功能:

SET GLOBAL local_infile=1;
但是,您仍然需要在客户端上启用它。您可以在运行时通过向
mysql
命令添加命令行参数来实现这一点:

mysql --local-infile=1 ...

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

这对我毫无帮助。我需要一个变通办法。我在my.cnf中添加了本地内嵌,但这并没有改变错误。我使用安装时提供的语句启动MySQL。我没有做什么特别的事。你的答案仍然没有提供解决办法,因为我没有特别禁用任何东西。@octopusgrabbus如果它对你没有任何帮助,那么你为什么接受这个答案??你为什么不接受自己的答案呢?
设置local\u infle=1
将在较新的MySQL版本上失败。
设置全局本地加密=1
是为我做的。不过这是可行的:
mysql-u username-p--local infle db-A