سؤال

وأنا لا يمكن الحصول على رمز التالية لإنشاء أي إخراج. المستخدم الخلية قد "كل" مستوى المنحة / تمة غير قابل للكتابة، الاستعلام بإرجاع النتائج الواردة.

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

هل يجب أن تكون رؤية الناتج يختلف عن الخلية في حالة الفشل؟

هل يمكنني التحقق من نتيجة أبعد من "الصف 1 تتأثر"؟

هل كانت مفيدة؟

المحلول

والملفات توليد عليها في البند OUTFILE يتم إنشاؤها على الخادم المضيف الخلية. من فضلك تأكد من يبحثون على الخادم المضيف الخلية كما يبدو أنك على المضيف العميل والتي على الأرجح ليس الخادم المضيف الخلية.

http://dev.mysql.com/doc/refman /5.0/en/select.html في المقطع حول OUTFILE عن الوثائق المتعلقة بذلك.

نصائح أخرى

وجئت عبر هذه المشكلة في فيدورا 17 وكان سببه سيستم دي. أعتقد أنه من الجيد للمشاركة.

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

هذا بلوق ، وجدت فكرة.

ويبدو أنك قد تكون قيد التشغيل في مشكلة أذونات الملف. تأكد من أن المستخدم: المجموعة التي mysqld قيد التشغيل ضمن ديها adaqute إذن الكتابة إلى /tmp/test.csv

وهناك مجموعة متنوعة كاملة من النكهات إذن الخادم الخفي / الملف الذي من شأنه أن يحل المشكلة. يفترض المستندة إلى UNIX، يمكنك: chgrp mysqldGROUP / تمة

ولكن هذا يجعل الأمر يبدو ذلك easy- يتم تكوين الخادم الخاص بك بطريقة معينة، بحيث يمكنك التكيف مع ذلك. يجب حقا أن تكون عملية mysqld فقط قادرا على قراءة / كتابة من عدد قليل من الأماكن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top