【问题标题】:MySQL,OUTFILE: Is it possible to store query result into a variable instead of a fileMySQL,OUTFILE:是否可以将查询结果存储到变量而不是文件中
【发布时间】:2015-04-18 11:30:28
【问题描述】:

我正在尝试使用php 备份表记录。我使用以下代码获取数据:

 $table_name = "my_table";
 $backup_file  = dirname(__FILE__)."/backup/my_table.sql";
 $sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name";
 $retval = mysql_query( $sql, $conn );

但是,最后一行给出了以下错误:

拒绝用户 'user_name'@'10.1.1.9' 的访问(使用密码:YES)

我将backup 目录及其文件的文件权限更改为777。但仍然存在同样的错误。

现在,我想知道,在 SELECT * INTO OUTFILE 中,是否可以将备份数据存储到变量(而不是文件)中。那么我可以将该变量存储到文件中吗?

【问题讨论】:

    标签: php mysql permissions backup database-backups


    【解决方案1】:

    用户 'user_name'@'10.1.1.9' 的访问被拒绝(使用密码:YES)

    这个错误不是因为拒绝访问文件系统,而是因为数据库。
    您正在尝试使用名为 user_name 的用户和密码连接到数据库。而且它没有访问权限(可能是错误的名称或密码?)。

    如果您不想将查询结果存储到变量中,可以通过删除查询的INTO OUTFILE 部分来做到这一点:

    "SELECT * FROM $table_name"
    

    虽然我们这样做了,但我建议您停止使用旧版本 PHP 提供的 mysql_* API。它是一个糟糕且已弃用的 API,将在未来的版本中删除。
    请查看mysqliPDO

    【讨论】:

      【解决方案2】:

      评论有点长。

      您并没有真正“备份”表格。您只是在复制其内容。如果这足以满足您想要完成的任务,那么只需一次读取记录,然后将它们写入文件。这是一个 php 循环。

      您面临的问题是服务器没有文件所在目录的权限。也许有一种方法可以授予服务器权限或使用安装在服务器和客户端计算机上的公共文件系统。

      “备份”和“恢复”是应用于整个数据库及其中所有内容的概念,包括表、表结构、约束、视图、存储过程、用户定义的函数、触发器, 等等。您可以阅读有关内置功能的更多信息here

      【讨论】:

      • 我把备份目录改成777,为什么服务器没有写文件的必要权限?
      • @Ormoz 。 . .服务器可能甚至看不到文件系统,或者可能不像你看到的那样。需要从服务器的角度来命名。
      猜你喜欢
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2018-03-08
      • 1970-01-01
      相关资源
      最近更新 更多