繁体   English   中英

mysql 5.1.73加载数据本地文件错误

[英]mysql 5.1.73 load data local infile error

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

将数据本地文件'unziped / product.csv'加载到表producttemp中,以',','',','包围起来的字段以'\\'以'\\ r \\ n'终止的行

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

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

这里有什么问题?

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

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

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

使用旧的,已弃用的mysql扩展名:

与通常一样,将128与可能需要的其他MYSQL_CLIENT_*标志放入mysql_connect()的参数$flags OR -ed中。 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选项PDO::MYSQL_ATTR_LOCAL_INFILETRUE

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

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

local-infile = 1

您也可以尝试通过命令行连接,并显式设置标志:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM