【问题标题】:MySQL: SELECT * INTO OUTFILE returns always empty array and no error_code?MySQL:SELECT * INTO OUTFILE 返回总是空数组并且没有error_code?
【发布时间】:2015-04-24 08:54:34
【问题描述】:

我正在尝试使用 PHP 将表转储到 MySQL 文件中。 但我得到的是一个空数组,并没有创建任何文件。如果我删除指令“ INTO OUTFILE '$mysqldumpfile'”,一切正常。 请在此处输入代码:

<?php
$tablename = "song";
$mysqldumpfile = "mysql_dump.sql";
$pdo_options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', );

try {
    // Call MySQL DB
    $sql = new PDO($servername, $username, $password, $pdo_options);
} catch (PDOException $e) {
    die("DB not available");
}

// Dump MySQL
$sth = $sql->prepare("SELECT * INTO OUTFILE '$mysqldumpfile' FROM $tablename");
$sth->execute();
$result = $sth->fetchAll();
print_r($result);
if(! $result) {
  die('Could not load data : ' . mysql_error());
}
$sql = null;
?>

【问题讨论】:

  • 几个想法: fetchall - 将是空的,因为结果不是返回,而是保存;所以 print_r 不会有太多内容。您的文件:服务器上的文件权限?脚本需要有写入文件的权限。
  • 正如我在帖子开头所说的,没有创建任何文件。并且数组是空的。

标签: php mysql into-outfile select-into-outfile


【解决方案1】:

确保mysql有权访问该文件,并且该文件在查询之前不能存在,mysql必须是生成文件的那个,并且文件路径必须是绝对的

【讨论】:

  • 是的,有权利,我也尝试了绝对路径,但没有得到结果。该文件在查询之前不存在。
  • 尝试设置 777 对文件夹的访问权限,也尝试在 mysql 管理器(如 phpmyadmin 之类)中进行查询,看看是否有效
  • 给出 777 服务器返回错误 500。使用 phpMyAdmin 设置 SELECT 会返回用户无权执行该命令:#1045 - 用户 'admin'@'%' 的访问被拒绝(使用密码:YES)可能是提供商的设置?
  • 好的,你的mysql用户不允许运行这个命令
【解决方案2】:

看看这是否适合你:

http://stackoverflow.com/a/16910191/2511206
OR
http://stackoverflow.com/a/26749685/2511206

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2011-01-28
    • 2019-12-02
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多