mysql 5.1.73 加载数据本地infile错误

Posted

技术标签:

【中文标题】mysql 5.1.73 加载数据本地infile错误【英文标题】:mysql 5.1.73 load data local infile error 【发布时间】:2015-03-27 12:55:38 【问题描述】:

我正在尝试使用下面的代码使用 LOAD DATA LOCAL INFILE 将数据加载到 mysql 表中。

LOAD DATA LOCAL INFILE 'unziped/product.csv' INTO TABLE producttemp FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\r\n'

直到几天前,我的脚本运行良好,但托管公司将 mysql 更新为 5.1.73,现在我收到错误“此 MySQL 版本不允许使用的命令”。

我不知道服务器上以前是什么版本。这个命令在 mysql 5.3 和 5.5 上也可以正常工作

这里有什么问题?

我尝试谷歌但找不到任何类似的问题

【问题讨论】:

您是否从php 代码运行该命令?如果是,您使用什么 PHP 扩展与数据库通信(mysql/mysqli/PDO)? 如果你不是从 PHP 运行它,你为什么要使用 PHP 标签? 【参考方案1】:

如果您从 PHP 代码运行该命令,则可以在与 MySQL 服务器的连接上启用 LOAD DATA LOCAL INFILE 命令。

具体过程取决于用于与 MySQL 通信的 PHP 扩展。

使用旧的、已弃用的 mysql 扩展:

像往常一样,将128 放入mysql_connect()OR-ed 的参数$flags 中,以及您可能需要的其他MYSQL_CLIENT_* 标志。值128 启用LOAD DATA LOCAL 处理,但没有为它定义常量。 阅读mysql_connect() 的文档页面。

// Put your connection parameters in $server, $username, $password as usual
$server   = '127.0.0.1';
$username = 'root';
$password = '****';
// Put 128 bitwise OR-ed with other flags, if needed
$flags = 128;
// ... and connect
$link = mysql_connect($server, $username, $password, $new_link, $flags);

使用mysqli 扩展:

使用mysqli_options()函数将MYSQLI_OPT_LOCAL_INFILE设置为TRUE

$link = mysqli_init();
mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, TRUE);
mysqli_real_connect($server, $username, $password);

正如文档中所述,这是使用mysqli_options() 的正确方法。

使用PDO:

PDO 构造函数的$options 参数上将选项PDO::MYSQL_ATTR_LOCAL_INFILE 设置为TRUE

$options = array(
    PDO::MYSQL_ATTR_LOCAL_INFILE = TRUE;
);
$link = new PDO($dsn, $username, $password, $options);

【讨论】:

它是一个 php 脚本,我使用 mysql。 @axiac 我尝试了您的 mysql 扩展解决方案,但仍然收到相同的消息。我看不到或更改 my.conf【参考方案2】:

这可能是因为 /etc/my.conf 中的默认设置改变了 应该设置一个标志以使其再次起作用:

local-infile = 1

您也可以尝试通过命令行连接并明确设置标志:

mysql --local-infile -u root -p db_name

【讨论】:

以上是关于mysql 5.1.73 加载数据本地infile错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MySQL 禁用加载本地 infile 不起作用?

如何为 AWS RDS 加载数据 infile mysql 工作台?

使用html表单导入csv数据...使用PHP脚本加载数据infile和MySQL

如何保护加载数据本地infile更新查询免受sql注入

Python/MySQL - 加载数据本地文件

Infobright/MySQL 加载数据 infile 死锁