select * into outfile 即使对于 root 也不起作用

Posted

技术标签:

【中文标题】select * into outfile 即使对于 root 也不起作用【英文标题】:select * into outfile not working even for 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 时发生的确切情况 【参考方案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 相同

【讨论】:

以上是关于select * into outfile 即使对于 root 也不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Mysql select into outfile 命令

select into outfile

MySQL SELECT xxx INTO OUTFILE用法

select into outfile

SELECT INTO OUTFILE 无法写入文件

Mysql 使用 select into outfile