Olá
Esta minha "saga" ainda não chegou ao fim...
Resolvi (por uma gambiarra talvez) o problema das permissões, já que minhas
concessões de privilégios não estavam sendo herdadas nos subdiretórios e
seus arquivos. Li alguma coisa sobre Diretivas de Grupo (Group Policy) mas
ainda não compreendi a origem do problema (!?).
Enfim, tentando agora "startar" o initdb, encontro este erro:
O programa "postgres" foi encontrado pelo "D:\pgsql\bin\initdb" mas
nao tem a mesma versão que initdb.
Verifique sua instalação.
Pois bem, examinando o código-fonte do initdb (embora eu não seja
programador C) encontrei as linhas que tratam esse problema:
02306 /*
02307 * we have to set PGDATA for postgres rather than pass it on
the
02308 * command line to avoid dumb quoting problems on Windows,
and we
02309 * would especially need quotes otherwise on Windows because
paths
02310 * there are most likely to have embedded spaces.
02311 */
02312 pgdenv = xmalloc(8 + strlen(pg_data));
02313 sprintf(pgdenv, "PGDATA=%s", pg_data);
02314 putenv(pgdenv);
02315
02316 if ((ret = find_other_exec(argv[0], "postgres", PG_VERSIONSTR,
02317
backend_exec)) < 0)
02318 {
02319 char full_path[MAXPGPATH];
02320
02321 if (find_my_exec(argv[0], full_path) < 0)
02322 StrNCpy(full_path, progname, MAXPGPATH);
02323
02324 if (ret == -1)
02325 fprintf(stderr,
02326 _("The program \"postgres\"
is needed by %s "
02327 "but was not found in the\n"
02328 "same directory as
\"%s\".\n"
02329 "Check your
installation.\n"),
02330 progname, full_path);
02331 else
02332 fprintf(stderr,
02333 _("The program \"postgres\"
was found by \"%s\"\n"
02334 "but was not the same
version as %s.\n"
02335 "Check your
installation.\n"),
02336 full_path, progname);
02337 exit(1);
02338 }
Mais adiante, temos a função find_my_exec , em:
http://se.uwaterloo.ca/~h7zhang/psql/exec_8c-source.html
Aparentemente, a primeira validação é com relação às variáveis de ambiente,
path absoluto e não relativo, etc.
Eu testei algumas coisas em minhas environments variables, sem sucesso,
seja testando setar o caminho "absoluto", seja setando a PG_VERSION, etc,
etc...
Confirmei na linha de comando:
postgres -V
initdb -V
Resultado dá idêntico.
Também tentei na porta 5433.
Testei também outras 2 versões do PostgreSQL, acredite...
E testei também em instalações (agora sempre usando o zip) em outros
diretórios, sempre mudando as variáveis, checando tudo...
Por último, a medida derradeira: faxina geral. Apaguei tudo, zerei as
pastas, passei o CCleaner, Glarys, removi a conta "postgres" e limpei
manualmente o registro do windows, excluindo todos os rastros referentes ao
profile "postgres", etc.
Naturalmente, também esvaziando a pasta temp do Administrador, já que
alguma coisa fica ali.
Faxina geral. Ficou uma beleza. Máquina nova...
Pronto. Criei a conta "postgres2" (tudo novo, 100% à prova de balas),
descompactei o zip, criei as variáveis de ambiente, abri o cmd para esta
conta nova e fui instalar confiante... e o resultado novamente foi:
O programa "postgres" foi encontrado pelo "D:\pgsql\bin\initdb" mas
nao tem a mesma versão que initdb.
Verifique sua instalação.
Urucubaca? Assombração? Bruxaria?...
Só o que falta é eu ter que compilar (sou virgem nisso, heheh) o fonte do
initdb.c , suprimindo o maldito "exit" da linha 02338 que não está deixando
eu criar o meu cluster!
Sugestões?
Fabiano
._____________________
|
| ,-,__,
| { / /__\
| { `}'- -/
| {_}/\ o/
| __} {__
| / " \
|/ /| 0} 0} \
/ / \`~' `"/\ \
{ : } { : }
\ \ } . { / /
|\ \/ \ /
| j{ \ / }t
| { Y }
| \ \ /
| \ V
| `, \
| {` }
|_____ {' /_________
; /
; /
, ,
(, k
\,,,
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral