mysql 5.1.73加载数据本地infile错误

时间:2015-01-28 14:58:44

标签: php mysql database

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

LOAD DATA LOCAL INFILE'unziped / product.csv'INTO TABLE producttemp FIELDS TERMINATED BY',''''''''''''''''''''''''''''''''''''''

直到几天前,我的脚本工作正常,但是托管公司将mysql更新为5.1.73,现在出现错误“此MySQL版本不允许使用该命令”。

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

这里有什么问题?

我试图谷歌但无法找到任何类似的问题

2 个答案:

答案 0 :(得分:1)

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

确切的过程取决于用于与MySQL通信的PHP扩展。

使用旧的,已弃用的mysql扩展程序:

128放入$flags mysql_connect()的参数ORMYSQL_CLIENT_* - 像往常一样,使用您可能需要的其他128标记。值LOAD DATA LOCAL启用// 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); 处理,但没有为其定义常量。 阅读mysql_connect()的文档页面。

mysqli

使用MYSQLI_OPT_LOCAL_INFILE扩展程序:

使用mysqli_options()功能将TRUE设置为$link = mysqli_init(); mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, TRUE); mysqli_real_connect($server, $username, $password);

mysqli_options()

正如文档中所解释的,这是使用PDO的正确方法。

使用TRUE

$options构造函数的PDO参数上设置选项PDO::MYSQL_ATTR_LOCAL_INFILE$options = array( PDO::MYSQL_ATTR_LOCAL_INFILE = TRUE; ); $link = new PDO($dsn, $username, $password, $options);

{{1}}

答案 1 :(得分:0)

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

local-infile = 1

您可以尝试通过命令行连接并且explicitley设置标志:

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