15

次のコードを取得して出力を生成できません。MySQL ユーザーの許可レベルは「all」で、/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 行」以上の結果を検証できますか?

4

3 に答える 3

18

outfile 句によって生成されるファイルは、mysql サーバー ホスト上に作成されます。おそらくmysqlサーバーホストではないクライアントホスト上にいるように見えるため、mysqlサーバーホストを見ていることを確認してください。

これに関するドキュメントについては、outfile に関するセクションのhttp://dev.mysql.com/doc/refman/5.0/en/select.htmlを参照してください。

于 2009-06-24T16:32:14.377 に答える
12

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

このブログのおかげで、手がかりが見つかりました。

于 2013-07-09T03:48:35.153 に答える
0

ファイルのアクセス許可の問題が発生しているようです。mysqldが実行されているuser:groupに、/ tmp/test.csvへの書き込みに対するadaqute権限があることを確認してください

問題を解決するさまざまなサーバーデーモン/ファイルパーミッションフレーバーがあります。おそらくUNIXベースで、次のことができます。chgrp mysqldGROUP / tmp

しかし、それはとても簡単に見えるようになります-あなたのサーバーは特定の方法で構成されているので、あなたはそれに適応します。mysqldプロセスは、実際には少数の場所からのみ読み取り/書き込みができる必要があります。

于 2010-11-12T03:42:19.903 に答える