【问题标题】:MySQL: Still can't LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO TABLE test FIELDS TERMINATED BY '\n'MySQL:仍然无法 LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO TABLE test FIELDS TERMINATED BY '\n'
【发布时间】:2016-08-05 21:11:48
【问题描述】:

使用 Ubuntu Server 14.04 x64 / PHP 5.5.9-1ubuntu4 (cli) w/ FPM / MySQL InnoDB 版本 5.5.35

我创建了一个 PHP 脚本,它从远程服务器下载文本文件,然后尝试使用 LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO TABLE 测试将其导入由“\n”终止的字段。

我已经完成了修改php.ini文件的过程:

[MySQL]
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysql.allow_local_infile
mysql.allow_local_infile = On

我已经修改了 my.cnf([mysql] 和 [mysqld] 条目):

local-infile=1
local-infile

我已经从终端运行 MySQL 然后发出:

SET GLOBAL local_infile = 'ON';

我已经手动启动和停止了 MySQL:

sudo /etc/init.d/mysql start --enable-local-infile

在这些命令中的每一个之后,我都可以运行 SHOW GLOBAL VARIABLES LIKE 'local_infile';,它总是说值是 ON。从 MySQL 提示符执行我的 LOAD DATA 命令没有任何问题,但是如果我尝试运行 LOAD DATA存储在 PHP 文件中时出错:

此 MySQL 版本不允许使用的命令

根据我的阅读,似乎有一些人建议使用“--with-mysql=/usr”重新编译 PHP,但这对我来说似乎是一种真正的大锤方法,也许我错了。我可以发出任何 MySQL 查询,但来自 PHP 文件的查询除外。我做错了什么?

【问题讨论】:

标签: php mysql


【解决方案1】:

你必须在 /etc/mysql/my.cnf 文件中写入两次以下行

sudo gedit /etc/mysql/my.cnf

然后在[mysql]段下 和段落[mysqld]

添加以下行:

local-infile=1

然后保存文件

然后重启

【讨论】:

    猜你喜欢
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2012-06-01
    • 2020-07-25
    • 2013-01-24
    • 1970-01-01
    相关资源
    最近更新 更多