MySQL的选择INTO OUTFILE / tmp中没有输出(MySQL select into

2019-07-29 05:23发布

我不能让下面的代码生成任何输出。 MySQL的用户拥有“全”批准水平,/ tmp目录是可写的,查询返回的结果集。

mysql> SELECT field FROM test_table WHERE condition='test'
    -> INTO OUTFILE '/tmp/test.csv'
    -> FIELDS TERMINATED BY ','
    -> ENCLOSED BY '"'
    -> LINES TERMINATED BY '\n';
Query OK, 1 row affected (0.00 sec)

mysql>
[1]+  Stopped                 mysql
[root@web1 ~]# cat /tmp/test.csv
cat: /tmp/test.csv: No such file or directory

我应该在失败的情况下从MySQL看到不同的输出?

我可以确认的结果进一步比“1行受影响”?

Answer 1:

该文件生成由OUTFILE条款在MySQL服务器主机上创建。 请确保您正在寻找在MySQL服务器主机上,因为它似乎你是客户端主机其中最有可能不是在MySQL服务器主机上。

见http://dev.mysql.com/doc/refman/5.0/en/select.html在有关这方面对于OUTFILE文件的部分。



Answer 2:

我的Fedora 17过这样的问题来了,它是由systemd引起的。 我认为这是很好的分享。

mysql> select * into outfile '/tmp/z1' from t1;
Query OK, 673 rows affected (0.01 sec)
mysql> select * into outfile '/tmp/z2' from t1;
Query OK, 673 rows affected (0.01 sec)
mysql> select * into outfile '/tmp/z1' from t1;
ERROR 1086 (HY000): File '/tmp/z1' already exists
mysql> Bye

# cat /tmp/z1
cat: /tmp/z1: No such file or directory
# ls -d systemd-*
/tmp/systemd-private-AQEueG
/tmp/systemd-private-AuCNDY
/tmp/systemd-private-TOMNxZ
/tmp/systemd-private-UacrpE
/tmp/systemd-private-yal7lQ
/tmp/systemd-private-ZlRJeN
# ls /tmp/systemd-private-TOMNxZ
z1  z2

罪魁祸首是/usr/lib/systemd/system/mysqld.service。

# Place temp files in a secure directory, not /tmp
PrivateTmp=true

多亏了这个博客 ,我发现了线索。



Answer 3:

听起来像是你可能会运行到一个文件的权限问题。 确保用户:是的mysqld下运行组都有写/tmp/test.csv adaqute许可

有一个品种全,将解决问题的服务器守护程序/文件权限的味道。 大概是基于UNIX的,你可以:chgrp命令mysqldGROUP / tmp目录

但是,这使得它显得如此了解快速您的服务器以某种方式配置,让你适应这一点。 mysqld进程应该真的只能够读取/从地方屈指可数写。



文章来源: MySQL select into outfile /tmp no output