【发布时间】:2011-11-30 02:04:27
【问题描述】:
我正在尝试使用LOAD DATA INFILE 将一些记录插入到表中。不幸的是,它不起作用。
这里有一些细节
如果我使用这条指令:
LOAD DATA INFILE 'file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);
它使用 MySQL 客户端程序和 PHP 应用程序工作。这样,它将在我的 MySQL 安装的数据目录中查找该文件。
现在,如果我尝试使用 LOCAL 选项执行指令,它只在我使用 mysql 客户端时有效,而不是从 PHP:
LOAD DATA LOCAL INFILE 'path/to/file/file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);
再次......它适用于 MySQL 客户端,但不适用于 PHP 应用程序......我收到此错误:
LOAD DATA LOCAL INFILE forbidden in /path/to/my/application
我读到这个问题与PHP的编译和使用mysqlnd有关。我正在使用 PHP 5.3.8 和 MySQL 5.5.15,但我还没有找到解决方案。
附加信息:到目前为止,我找到的唯一帮助是open PHP bug:
【问题讨论】:
-
可能是文件权限问题?
-
尝试设置绝对路径而不是相对路径。
-
来自 mysql 客户端但不是应用程序?您是否使用相同的用户名/密码进行连接?
-
麦克权限没问题,其实我把777放到文件里了。
-
阿米尔我使用的是绝对路径