Я пытаюсь выполнить сценарий pg_dump как задание cron. Прямо сейчас я просто пытаюсь запустить скрипт, вызывая его сам из командной строки. Я искал списки рассылки postgresql и следил за документацией postgresql, но безуспешно. Я тоже смотрел на StackOverflow, но после прочтения аналогичного сообщения на StackOverflow мне кажется, что на этом сайте должна быть такая проблема.
Системные характеристики:
RHEL5
Postgresql 9.0.3
Вот что я делаю:
скрипт находится здесь ~/database_backup/pg_dump_script
Я запускаю это из каталога
./pg_dump_script.sh
Скрипт выглядит так:
/home/myusername/lappstack-1.2-5/postgresql/bin/pg_dump --host=localhost
--port 5433 --username "myusername" --no-password --format plain --inserts
--column-inserts --verbose
--file "/home/username/database_backup/$(%m.%d.%y_%1.%M%P).sql"
--table "schema.table_name" --table "schema.table_name1" "db_name"
Этот сценарий, конечно, модифицирован, а не сам, но дает вам представление о том, что я делаю. Я пробовал другие предлагаемые имена хостов: 127.0.0.1, 10.32.123.22 (конечно, не настоящий IP-адрес). Порт правильный. 5433 - это то, что находится в pg_hba.conf
Я получаю ошибку:
./pg_dump_script.sh
" failed: fe_sendauth: no password supplieddatabase "
pg_dump.bin: *** aborted because of error
./pg_dump_script.sh: line 2: fg: no job control
./pg_dump_script.sh: line 2: --file: command not found
./pg_dump_script.sh: line 3: --table: command not found
./pg_dump_script.sh: line 4: --table: command not found
./pg_dump_script.sh: line 5: --table: command not found
./pg_dump_script.sh: line 6: --table: command not found
./pg_dump_script.sh: line 7: --table: command not found
./pg_dump_script.sh: line 8: --table: command not found
./pg_dump_script.sh: line 9: --table: command not found
./pg_dump_script.sh: line 10: --table: command not found
./pg_dump_script.sh: line 11: --table: command not found
./pg_dump_script.sh: line 12: --table: command not found
./pg_dump_script.sh: line 13: --table: command not found
./pg_dump_script.sh: line 14: --table: command not found
./pg_dump_script.sh: line 15: --table: command not found
./pg_dump_script.sh: line 16: --table: command not found
./pg_dump_script.sh: line 17: --table: command not found
./pg_dump_script.sh: line 18: --table: command not found
./pg_dump_script.sh: line 19: --table: command not found
./pg_dump_script.sh: line 20: --table: command not found
./pg_dump_script.sh: line 21: --table: command not found
./pg_dump_script.sh: line 22: --table: command not found
./pg_dump_script.sh: line 23: --table: command not found
./pg_dump_script.sh: line 24: --table: command not found
./pg_dump_script.sh: line 25: --table: command not found
./pg_dump_script.sh: line 26: --table: command not found
./pg_dump_script.sh: line 27: --table: command not found
./pg_dump_script.sh: line 28: --table: command not found
./pg_dump_script.sh: line 29: --table: command not found
./pg_dump_script.sh: line 30: --table: command not found
./pg_dump_script.sh: line 31: --table: command not found
./pg_dump_script.sh: line 32: --table: command not found
./pg_dump_script.sh: line 33: --table: command not found
./pg_dump_script.sh: line 34: --table: command not found
./pg_dump_script.sh: line 35: --table: command not found
./pg_dump_script.sh: line 36: --table: command not found
./pg_dump_script.sh: line 37: --table: command not found
./pg_dump_script.sh: line 38: --table: command not found
./pg_dump_script.sh: line 39: --table: command not found
./pg_dump_script.sh: line 40: --table: command not found
./pg_dump_script.sh: line 41: --table: command not found
./pg_dump_script.sh: line 42: --table: command not found
./pg_dump_script.sh: line 43: --table: command not found
./pg_dump_script.sh: line 44: --table: command not found
Другие файлы, которые необходимо было настроить
у меня есть .pgpass
в моем ~ каталоге. Следуя этому соглашению:
http://www.postgresql.org/docs/9.0/static/libpq-pgpass.html
Я также убедился, что сделал chmod 0600 ~/.pgpass
Я могу бежать pg_dump
используя PgAdmin3 на моем компьютере с Windows. Так что я не думаю, что это проблема с подключением. Я тоже умею бегать psql
без ввода пароля, поэтому это должно означать pgpass
работает правильно?
Сообщите мне, если потребуется дополнительная информация!
Обновления
Я использовал все предложения и дошел до того, что отлаживаю один параметр за раз.
Вот что у меня есть:
/home/username/lappstack-1.2-5/postgresql/bin/pg_dump --host=127.0.0.1 --port=5433 --username=myusername mydb_name
Это даст ошибку:
$ ./pg_dump_script.sh
Password:
" does not exist database "my_dbnamenection to database "mydb_name
^ Ошибка выводится неправильно. Это не орфографическая ошибка. Я просто заменил фактическое имя базы данных на «mydb_name».
У меня он запрашивает пароль, и я ввожу свой пароль. Я ценю комментарии. Они определенно помогают с процессом устранения неполадок и сэкономят мне время в будущем!
Согласно вашим сообщениям об ошибках, вы должны попробовать использовать обратную косую черту \:
/home/myusername/lappstack-1.2-5/postgresql/bin/pg_dump --host=localhost \
--port 5433 --username "myusername" --no-password --format plain --inserts \
--column-inserts --verbose \
--file "/home/username/database_backup/$(%m.%d.%y_%1.%M%P).sql" \
--table "schema.table_name" --table "schema.table_name1" "db_name"
Проблема заключалась в том, что были символы возврата каретки DOS. Я использовал шпатлевку, и, по-видимому, кодировка DOS проникала в сценарий. Что я сделал, так это запустил dos2unix в скрипте. Я разместил этот вопрос в stackoverflow после того, как увидел, что это скорее проблема сценариев, чем администрирование БД. Вот URL-адрес вопроса и разработанного решения. Настоящая заслуга принадлежит компании chepner & mbratch. Спасибо, парни!