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 也不起作用的主要内容,如果未能解决你的问题,请参考以下文章