Стоп сервера работает нормально... но старт почему не возращаеться...
try { String line; Process p = Runtime.getRuntime().exec ("C:\\PROGRA~1\\PostgreSQL\\9.0\\bin\\pg_ctl.exe -w restart -D \"C:/Program Files/PostgreSQL/9.0/data\"" ); BufferedReader input = new BufferedReader (new InputStreamReader(p.getInputStream())); while ((line = input.readLine()) != NULL) { System.out.println(line + " " + line.length()); } input.close(); } catch (Exception err) { err.printStackTrace(); }
пишет: ожидание завершения работы сервера.... готово
сервер остановлен
ожидание запуска сервера... готово
сервер запущен
и не выходит с цикла.. хотя буфер пустой... но при стопе сервера таких проблем нету, только при старте
более того... проблема не в буфере.. а сам Process не завершается почему
__________________________________
То есть я создаю процесс в котором открываю pg_ctl передаю в него аргументы.. дальше он впихивает туда аргументы и перезапускает сервер... но почему-то не заканчивает работу, хотя сервер перезапустился.. и давно процесс закончил работу... данная проблема происходит на функции start. с stop нету проблем.
Уж сколько раз твердили миру:
Уж сколько раз твердили миру: читайте логи! Без логов можно строить предположения и догадки, не более того.
И ещё - руками-то зачем пускаете? Есть же "Службы" в Винде, если через них? Да если ещё от администратора?
в логах проблем
в логах проблем нету
2011-10-14 10:53:29 EEST LOG: database system was shut down at 2011-10-14 10:53:28 EEST
2011-10-14 10:53:29 EEST LOG: database system is ready to accept connections
2011-10-14 10:53:29 EEST LOG: autovacuum launcher started
2011-10-14 10:53:41 EEST LOG: received smart shutdown request
2011-10-14 10:53:41 EEST LOG: autovacuum launcher shutting down
2011-10-14 10:53:41 EEST LOG: shutting down
2011-10-14 10:53:41 EEST LOG: database system is shut down
2011-10-14 10:53:42 EEST LOG: database system was shut down at 2011-10-14 10:53:41 EEST
2011-10-14 10:53:42 EEST LOG: database system is ready to accept connections
2011-10-14 10:53:43 EEST LOG: autovacuum launcher started
руками запускаю именно потому, что я хочу уйти от виндовс служб, да и вообще от виндовс или другой ОС..
когда запускаю pg_ctl stop -d .. все работает хорошо, база останавливается процесс завершен
когда запускаю pg_ctl start -d .. все запускаеться норм, но процесс в котором я запускал не останавливается и не завершается
Через службы пускается
Через службы пускается нормально или нет? (спрашиваю, потому что запуск через службы делает это с определёнными правами от определённого пользователя). Если через службы не запускается, то посмотрите от какого пользователя выполняется запуск и попробуйте как тут:
http://postgresql.ru.net/docs/extented_FAQ.html#Q108
права есть
с правами все хорошо, через службы стартует нормально, я раньше и пользовался через службы, но теперь нужно уйти от этого варианта..
через cmd с той же командой, что и через процесс тоже все норм.. а вот через процесс не возвращает управление. ладно буду разбираться
а есть еще какие-то варианты перезапуска сервера?
Значит таки чего-то ему не
Значит таки чего-то ему не хватает для полного счастья при запуске.
А не пробовали воспользоваться командной строкой для запуска через службы? В виде:
net start имя_службы
почему же не пробовал,
почему же не пробовал, пробовал.. запускает все норм. (net start имя_службы)
может сам process не хочет корректно работать.. но как то странно.. pg_ctl stop то норм работает, а start похоже создает, какой-то еще процесс, который не завершается
так просто не хочет стартовать... хотя это прописано в стандартном сервесе
C:/PROGRA~1/PostgreSQL/9.0/bin/pg_ctl.exe runservice -N "postgresql-x64-9.0" -D "C:/Program Files/PostgreSQL/9.0/data" -w
error 1063
а из service manager стартует нормально, запускается служба
Похоже всё-таки какие-то
Похоже всё-таки какие-то виндозные заморочки. Может политики безопасности какие хитрые стоят. Может запускаете с правами пользователя не имеющего каких-либо прав. Может антивирус мешает. Леший его знает.
не в политике безопасности..
не в политике безопасности.. разберусь расскажу...
последний вопрос.
а pg_ctl start не запускает же службу? для этого нужен же runservice
pg_ctl это утилита управления
pg_ctl это утилита управления серверным процессом самого PostgreSQL. Она к windows не имеет никакого отношения и существует и в PostgreSQL для UNIX платформ. На мой взгляд это как раз Windows при запуске службы с помощью стандартного для windows механизма должен использовать pg_ctl (да так оно и есть я на 99.99% уверен)
ну это я понял, я читал код
ну это я понял, я читал код pg_ctl.
ну в общем проблема скорее всего в "процесс".. как разберусь напишу.
спасибо за ответы.
bat
вот если запускать через этот бат, то сервер рестартиться.. а дальше бат не закрываеться... но если снять задачу бат, то и сам сервер падает..
считаю, что проблема в pg_ctl start.
попробуйте у себя через бат запустить сервер