Странные проблемы с выходным файлом mysql под FreeBSD

(См. мой ответ ниже. Оставьте это на случай, если это поможет кому-то еще.)

Далее следует серия попыток отправить запрос в внешний файл на новой машине FreeBSD, на которую переехал мой сайт. Результаты будут одинаковыми, если я войду в систему как я или если я войду в систему как пользователь root. Я надеюсь, что стиль не слишком раздражает. Мои комментарии закомментированы вокруг фактического кода и вывода.

// пытаемся сбросить запрос в мой домашний каталог

SELECT pmr.datetime_requested, 
nfo.postal_code 
FROM 
print_mailing_request pmr, 
personal_info nfo 
WHERE  
nfo.person = pmr.person AND 
pmr.datetime_requested >= "2010-01-01 00:00:00"  AND 
(pmr.print_mailing = 31 OR pmr.print_mailing = 30)
ORDER BY pmr.datetime_requested INTO OUTFILE '/usr/home/david/x';

ERROR 1 (HY000): Can't create/write to file '/usr/home/david/x' (Errcode: 2)

// пытался сначала создать файл с помощью touch и даже файла chmod 077 // но каждый раз одна и та же ошибка

// Хорошо, попробуем /tmp

SELECT pmr.datetime_requested, 
nfo.postal_code 
FROM 
print_mailing_request pmr, 
personal_info nfo 
WHERE  
nfo.person = pmr.person AND 
pmr.datetime_requested >= "2010-01-01 00:00:00"  AND 
(pmr.print_mailing = 31 OR pmr.print_mailing = 30)
ORDER BY pmr.datetime_requested INTO OUTFILE '/tmp/x';

Query OK, 24654 rows affected (0.78 sec)

// так что давайте посмотрим на файл

less /tmp/x
/tmp/x: No such file or directory

// Войдите снова в mysql и повторите тот же запрос

ERROR 1086 (HY000): File '/tmp/x' already exists

ls /tmp
20100325180233.gtg2010.csv      20100330094652.gtg2010.csv
20100325180448.gtg2010.csv      2010_Q1_UNO.csv
20100325181446.gtg2010.csv      4724.csv
20100325181927.gtg2010.csv      aprbUfvxp
20100326003002.gtg2010.csv      dave.txt
20100327003002.gtg2010.csv      etr.xml
20100328003002.gtg2010.csv      mysql.sock
20100329003003.gtg2010.csv

// Нет файла х.

// Если я запускаю запрос без INTO OUTFILE, я вижу более 24000 строк

| 2010-04-04 13:27:09 | 33156                |
| 2010-04-04 13:27:10 | 33156                |
| 2010-04-04 13:30:04 | NE38 8SR             |
| 2010-04-04 14:27:03 | 00901                |
| 2010-04-04 14:37:04 | 75001                |
| 2010-04-04 14:53:05 | 78640                |
| 2010-04-04 15:15:03 | 07410                |
| 2010-04-04 15:27:04 | 43235                |

// Итак, я знаю, что это не запрос...

// Совет?


person jerrygarciuh    schedule 03.06.2010    source источник


Ответы (1)


Дох! Когда я вхожу в mysql на этом компьютере, в моей строке подключения есть IP-адрес. /tmp, что касается mysql, не находится на машине, в которую я вошел...

поэтому я решил проблему, используя mysql -e, например:

mysql -h my.db.com -u usrname--password=pass db_name -e 'SELECT foo FROM bar' > /tmp/myfile.txt
person jerrygarciuh    schedule 03.06.2010