我正在尝试使用以下代码使用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上也能正常工作
这里有什么问题?
我试图谷歌但无法找到任何类似的问题
答案 0 :(得分:1)
如果从PHP
代码运行该命令,则可以在与MySQL服务器的连接上启用LOAD DATA LOCAL INFILE
命令。
确切的过程取决于用于与MySQL通信的PHP扩展。
mysql
扩展程序:将128
放入$flags
mysql_connect()
的参数OR
,MYSQL_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