PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 25 → Como criar instâncias diferentes no PostgreSQL para usar com o driver nativo em portas diferentes
Como criar instâncias diferentes no PostgreSQL para usar com o driver nativo em portas diferentes
Started by Boller, May, 30 2023 5:03 AM - 4 replies
Registered member
3,655 messages
Popularité : +175 (223 votes)
Posted on May, 30 2023 - 5:03 AM
No PostgreSQL tem como ter instâncias diferentes no mesmo servidor com portas diferentes ?

Para instalar várias instâncias do PostgreSQL no Windows, você pode seguir os passos abaixo. Cada instância precisará de sua própria porta e diretório de dados:

Instale o PostgreSQL: Se ainda não tiver o PostgreSQL instalado, você pode baixar a versão mais recente do site oficial do PostgreSQL e seguir as instruções de instalação.

Inicialize uma nova instância do banco de dados: Para inicializar uma nova instância do banco de dados, você pode usar o comando initdb com a opção -D para especificar um novo diretório de dados. Por exemplo, para criar uma nova instância em C:\pgsql\data2, você pode usar:


"C:\Program Files\PostgreSQL\12\bin\initdb.exe" -D "C:\pgsql\data2"


Certifique-se de substituir C:\Program Files\PostgreSQL\12\bin\initdb.exe pelo caminho correto para o initdb no seu sistema.
Configure a nova instância para usar uma porta diferente: Você precisa editar o arquivo postgresql.conf na nova instância do banco de dados para que ele use uma porta diferente. Por exemplo, para alterar a porta para 5433, você pode adicionar a seguinte linha ao arquivo postgresql.conf:


port = 5433


O arquivo postgresql.conf está localizado no diretório de dados da nova instância do banco de datos.
Registre a nova instância como um serviço do Windows: Use o comando pg_ctl para registrar a nova instância como um serviço do Windows. Por exemplo:


"C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe" register -D "C:\pgsql\data2" -N "postgresql2" -U "NT AUTHORITY\NetworkService"


Onde postgresql2 é o nome do novo serviço, e NT AUTHORITY\NetworkService é a conta do sistema que será usada para executar o serviço.

Certifique-se de substituir C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe pelo caminho correto para o pg_ctl no seu sistema.

Inicie o novo serviço do Windows: Você pode iniciar o novo serviço do Windows usando o Gerenciador de Serviços do Windows ou usando o comando net start no prompt de comando:


net start postgresql2


Repita esses passos para cada nova instância do banco de dados que você deseja criar.

Por favor, note que esses comandos são específicos para Windows. Você deve ajustar os caminhos e as portas de acordo com sua configuração específica.

Lembre-se de que executar várias instâncias do PostgreSQL no mesmo servidor pode consumir uma quantidade significativa de recursos, então você deve monitorar o uso de recursos do seu servidor para garantir que ele não fique sobrecarregado.


Em resumo

Em resumo, deu certo:

1-dobrar a pasta data para outros nomes

2-no arquivo PostgreSQL.conf de cada pasta Data nova mudar a porta 5432 para outro número

3-executar no cmd administrador

"C:\Program Files\PostgreSQL\12\bin\initdb.exe" -D "C:\pgsql\data2"

E

"C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe" register -D "C:\pgsql\data2" -N "postgresql2" -U "NT AUTHORITY\NetworkService"

4-iniciar o serviço:

net start postgresql2


Então você pode fazer um .bat

Arquivo Start_instancias.bat:

echo @off
echo .
cls

D:\PostgreSQL\15\bin\initdb.exe -D "D:\Postgresql\Databases\5430"

D:\PostgreSQL\15\bin\initdb.exe -D "D:\Postgresql\Databases\5431"

D:\PostgreSQL\15\bin\initdb.exe -D "D:\Postgresql\Databases\5432"

D:\PostgreSQL\15\bin\initdb.exe -D "D:\Postgresql\Databases\5433"

D:\PostgreSQL\15\bin\initdb.exe -D "D:\Postgresql\Databases\5434"

D:\PostgreSQL\15\bin\initdb.exe -D "D:\Postgresql\Databases\5435"


D:\PostgreSQL\15\bin\pg_ctl.exe register -D "D:\PostgreSql\Databases\5430" -N "Postgresql_15_5430" -U "NT AUTHORITY\NetworkService"

D:\PostgreSQL\15\bin\pg_ctl.exe register -D "D:\PostgreSql\Databases\5431" -N "Postgresql_15_5431" -U "NT AUTHORITY\NetworkService"

D:\PostgreSQL\15\bin\pg_ctl.exe register -D "D:\PostgreSql\Databases\5432" -N "Postgresql_15_5432" -U "NT AUTHORITY\NetworkService"

D:\PostgreSQL\15\bin\pg_ctl.exe register -D "D:\PostgreSql\Databases\5433" -N "Postgresql_15_5433" -U "NT AUTHORITY\NetworkService"

D:\PostgreSQL\15\bin\pg_ctl.exe register -D "D:\PostgreSql\Databases\5434" -N "Postgresql_15_5434" -U "NT AUTHORITY\NetworkService"

D:\PostgreSQL\15\bin\pg_ctl.exe register -D "D:\PostgreSql\Databases\5435" -N "Postgresql_15_5435" -U "NT AUTHORITY\NetworkService"

Pause

Assim cada usuário fica com uma instância










--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modified, May, 30 2023 - 5:10 AM
Registered member
3,655 messages
Popularité : +175 (223 votes)
Posted on June, 06 2023 - 11:34 PM
A VERSAO 28 DO DRIVER NATIVO DO POSTGRESQL TEVE UMA MUDANÇA

AGORA É

Server Port = xxxxx;









Mudou na 28 para Server Port = 15432









Para o Hopenconnection / HchangeConnection em Extend Info deve informar:

connPostgresql is connection
connPostgresql..user = "postgres"
connPostgresql..password = "123456"
connPostgresql..provider = hNativeAccessPostgreSQL
connPostgresql..server = "myserver.com.br"
connPostgresql..database = "myerp"
connPostgresql..extendInfo = "Server Port=154321"

if Hopenconnection(connPostgresql) = true

HChangeConnection("*",connPostgresql)

else

error(Herrorinfo())

end

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Registered member
3,655 messages
Popularité : +175 (223 votes)
Posted on June, 26 2023 - 9:40 PM
E se der o erro 52

Ocorreu num cliente esse erro num Webservice rest





Detalhes do erro

{"fault" : {"faultcode" : "server", "faultstring" : "The HFSQL security mechanism was triggered while looping through the 'sfvcomod' file on the '' item.\nnative PostgreSQL access error.\nError Number = 52 \n \nThe Native PostgreSQL Connector requires the <LIBPQ.DLL> DLL (32 bits) and its dependencies (PostgreSQL client layer).\nThese DLLs must be in the same directory as the DLL of the Native Connector, or in a directory of PATH.\nFor more details, see the Native Connector documentation.", "detail" : "WL call:\nProcess of 'Method ReadAll' (Msfvcomod.ReadAll), line 14\n\nWhat happened?\nThe HFSQL security mechanism was triggered while looping through the 'sfvcomod' file on the '' item.\nnative PostgreSQL access error.\nError Number = 52 \n \nThe Native PostgreSQL Connector requires the <LIBPQ.DLL> DLL (32 bits) and its dependencies (PostgreSQL client layer).\nThese DLLs must be in the same directory as the DLL of the Native Connector, or in a directory of PATH.\nFor more details, see the Native Connector documentation.\n\nError code: 73001\nLevel: fatal error\nWD55 error code: 3001\n\nSystem error code: 126\nSystem error message:\nNão foi possível encontrar o módulo especificado.\n\nModule: wd280hf.dll (01F280085n - 28.0.444.4)\n\nDebugging information:\nIEWDPSQL=9.1\nModule=<WDPSQL>\nVersion=<28.0.38.0>\nAdditional information:\nEIT_NATIVECODE : <52>\nEIT_LOGICALTABLENAME : <sfvcomod>\nEIT_PILEWL :\nMethod ReadAll (Msfvcomod.ReadAll), line 14\nEIT_DATEHEURE : 26/06/2023 15:37:29\nEIT_TYPE_WDFILE : <4>\nEIT_IDCODE : <458752>\nEIT_CODEHTTP : <500>"}}


Solução

Mudar a opção em GO para Debug 64





Resultado





Como era uma tabela vazia deu certo

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modified, June, 26 2023 - 9:44 PM
Registered member
3,655 messages
Popularité : +175 (223 votes)
Posted on June, 26 2023 - 9:45 PM
Erro 22 do PostgreSQL

Solução muitas vezes

Instale o PostgreSQL 15 que resolve

Ou na Analysis colocar em

Extende Info:

Server Port=5432;

-
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modified, June, 26 2023 - 9:57 PM
Registered member
3,655 messages
Popularité : +175 (223 votes)
Posted on June, 26 2023 - 9:52 PM
Outro erro estranho no PostgreSQL mas que também foi resolvido:





Motivo:

Tamanho do campo ultrapassou 30 carácteres

Dropou e rodou o script novamente e deu certo

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/