【问题标题】:select * into outfile not working even for rootselect * into outfile 即使对于 root 也不起作用
【发布时间】:2011-11-04 18:25:14
【问题描述】:

当我跑步时

mysql> select * into outfile "/home/akihirom/file1.txt" from BAIT_INTERACTION;

我收到以下错误:

错误 1 ​​(HY000): 无法创建/写入文件 '/home/akihirom/file1.txt' (Errcode: 13)

即使是 root 用户,在 mysql 或系统本身上也会发生这种情况。有谁知道为什么会发生这种情况?谢谢

【问题讨论】:

  • /home/akihirom 有错字吗?如果目录不存在,则无法在那里创建文件。
  • @gpojd 这是 Errcode 13 这意味着权限被拒绝。
  • 可能是因为 mysqld 以用户 mysql 而不是 root 身份运行。尝试将其写入 /tmp 以查看问题是否仍然存在。如果是这样,您就知道要寻找什么了。
  • Jon sudo 没有解决问题,gpojd 很确定该路径不包含拼写错误,Friek 我会试一试,谢谢
  • 在 strace 下运行它以查看打开 /home/akihirom/file1.txt 时发生的确切情况

标签: mysql linux select into-outfile


【解决方案1】:

我将这两个示例合并为一个,并提出了以下用于 capistrano 任务的示例。我能够调用一个 shell 并从命令行运行它。

mysql -uUSERNAME --database=${DBNAME} --execute=" SELECT * FROM ${TBNAME} INTO OUTFILE '/tmp/dumps/DBNAME.out' "

我在双引号之前添加了空格,以便您可以看到语法差异。

【讨论】:

    【解决方案2】:

    通过将 select 语句的内容转储到文件中,我可以使用 mysql dump 来做同样的事情:

    mysql -u USERNAME --password=PASSWORD --database=DATABASE --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X > file.xml
    

    Where I got the idea from

    【讨论】:

      【解决方案3】:

      关于错误 1 ​​(HY000):无法创建/写入文件“/home/akihirom/file1.txt”(错误代码:13)
      仅使用“file1.txt”,因为服务器仅写入 /var/lib/mysql/DB(其中 DB 是一个名为数据库的目录),稍后如果您是 root,请转到那里并根据需要管理文件。 你也可以使用 file1.cvs;它的工作原理与 file1.txt 相同

      【讨论】:

        猜你喜欢
        • 2011-02-21
        • 2013-03-24
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 2020-02-24
        • 2018-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多