Quantas versões do postgres você tem instalada?
Você já verificou a variável PATH? Ela pode estar apontando para o postgres
da outra versão.

Bruno E. A. Silva.




2011/12/23 Fabiano Donato <[email protected]>

> 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
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a