1

我正在尝试通过 Mysql 数据库中的文本文件插入数据并收到此错误

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

 ADOConnection._Execute(LOAD DATA LOCAL INFILE '/var/www/in2fonenew/inv/test.txt'
 INTO TABLE  tbl_transaction FIELDS TERMINATED BY '||' enclosed by '`..., false)

为此目的,下面提到了查询

$sql="LOAD DATA LOCAL INFILE '".$docroot."/inv/".$dbfile."' INTO TABLE 
tbl_transaction FIELDS TERMINATED BY '||' enclosed by '`' LINES TERMINATED
 BY '|||||' (field1,field2,field3,field4,field5,field6)";

我在这里做错了什么?

4

2 回答 2

2

来源:GitHub

“如果在服务器或客户端中禁用了 LOAD DATA LOCAL INFILE,则尝试发出此类语句的客户端会收到以下错误消息:错误 1148:此 MySQL 版本不允许使用的命令”

LOAD DATA LOCAL INFILE必须显式启用。

于 2013-01-15T05:19:12.953 回答
2

从 MySQL 5.5 手册页:

LOCAL 仅在您的服务器和客户端都已配置为允许时才有效。例如,如果 mysqld 以 --local-infile=0 启动,则 LOCAL 不起作用。请参见第 6.1.6 节,“LOAD DATA LOCAL 的安全问题”。

您应该设置选项:

local-infile=1

进入my.cnf 文件的[mysql]条目或使用--local-infile选项调用 mysql 客户端:

mysql --local-infile -uroot -pyourpwd yourdbname

您必须确保在[mysqld]部分中也定义了相同的参数,以启用“本地 infile”功能服务器端。

这是一个安全限制。

于 2013-01-15T05:19:50.590 回答