Php 查询中加载数据本地填充错误(1148):此MySQL版本不允许使用该命令
我已经看到这个问题被问了十几次,似乎每个人的答案都是一样的:将local infie=1添加到[mysql],[mysqld],并将[client]loose local infie=1添加到my.conf。我已经完成了所有这些,还为我的DB用户添加了文件权限。我仍然会犯同样的错误 我在虚拟Ubuntu 14.04服务器上运行MySQL 5.6。有人能告诉我我错过了什么吗?我已经在运行CentOS和MySQL 5.6的VPS live server上成功地实现了这一点,我不记得为了让它正常工作需要经历任何困难,尽管我是在一段时间前设置它的 如果有必要,我将尝试通过以下PHP函数进行此导入:Php 查询中加载数据本地填充错误(1148):此MySQL版本不允许使用该命令,php,mysql,Php,Mysql,我已经看到这个问题被问了十几次,似乎每个人的答案都是一样的:将local infie=1添加到[mysql],[mysqld],并将[client]loose local infie=1添加到my.conf。我已经完成了所有这些,还为我的DB用户添加了文件权限。我仍然会犯同样的错误 我在虚拟Ubuntu 14.04服务器上运行MySQL 5.6。有人能告诉我我错过了什么吗?我已经在运行CentOS和MySQL 5.6的VPS live server上成功地实现了这一点,我不记得为了让它正常工作需
// Connect to a database without using prepared statements (for LOAD FILE feed commands)
// $query = query to execute; $rs = return a result set if true
function db_query_unprepared($query, $rs = false) {
// Create database connection
$link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if (!$link) {
print 'Error connecting to MySQL Server. Errorcode: ' . mysqli_connect_error();
exit;
}
// Execute the query
if ($rs) {
$queryresults = array();
$counter = 0;
if (mysqli_multi_query($link, $query)) {
do {
// Save results to an array
if ($result = mysqli_store_result($link)) {
while ($row = mysqli_fetch_assoc($result)) {
$queryresults[$counter][] = $row;
}
mysqli_free_result($result);
$counter++;
}
} while (mysqli_next_result($link));
}
else {
print mysqli_error($link);
}
}
else {
mysqli_multi_query($link, $query);
}
mysqli_close($link);
// Return the results
if (isset($queryresults)) {
return $queryresults;
}
}
这又被称为:
db_query_unprepared('LOAD DATA LOCAL INFILE \'/path/to/mydatafile.csv' . '\' INTO TABLE feed_mydata FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\r\n\' IGNORE 1 LINES ( field1, field2, field3 )');
在进行.conf更改后是否重新启动了mysql?很抱歉,我是这样做的。LOCAL用于mysql客户端与mysql服务器位于不同机器上的情况。看起来两者都在同一个位置,并且没有使用客户端软件-请尝试删除本地关键字。如果没有本地关键字,则是mysqld服务器进程正在读取文件。MySQL通常以用户MySQL的身份运行,如果该用户不是文件的所有者,并且不是组的成员,则需要将文件的读取权限授予其他用户。。。chmod o+r/path/to/mydatafile.csv。