Boa noite.
Na minha primeira tentativa de subir o sistema no ambiente de produção, em um servidor windows 2012r2.
Wampserver 3 instalado e configurado.
1.Banco de dados Postgresql 9.1 rodando em produção, com a conexão da aplicação desenvolvida com o mesmo nome dos schemas.
2.Quando acesso a primeira vez, realiza a identificação de primeira vez, pede a configuração da conexão, banco de dados, IP da máquina onde está o banco, etc. Tudo certo, realiza a conexão após as configurações com o banco.
3.Quando coloco o caminho no navegador, localhost/sys, aparece a tela de login do sistema e em seguida, o seguinte erro:
"Erro ao incluir na base da dados ERROR: relation “sc_log” does not exists. INSERT INTO sc_log (inserted_date, username, application…
4. A tabela sc_log foi criada no schema public, e as outras tabela do sistema no schema crm dentro do banco de dados dbsys.
5. A mesma aplicação funciona na máquina de desenvolvimento no mesmo formato, schema e nome do banco de dados, e a conexão do postgresql dentro do scriptcase 9 também foi identificada no ambiente de produção tudo igual, tanto que conectou com o banco de dados.
Já tentei localizar o sc_log_add para tentar colocar “public” na frente do sc_log mas não consegui.
Alguém poderia me ajudar ?
Sc_log possui uma conexão diferente da do banco de dados do sistema?
Bom dia Haroldo.
Não possui não, foram construídos com a mesma conexão no desenvolvimento.
Você acha que poderia ser o seach_path do banco de dados? Lá temos o banco e dois schemas. E a sc_log e as tabelas de segurança padrão do SC9, não sei porque, foram criadas no schema public. Mas no meu ambiente de desenvolvimento funciona normal.
Citando novamente, o processo de subir foi muito fácil, como está nos vídeos no youtube, como a primeira tentativa, identificação da falta de conexão, apontamento, conexão com o banco tudo certinho. Depois quando chamo pelo navegador, dá esse erro no momento que ele constrói a tela, aparece o login e já apresenta o erro, que acredito ser porque tem eventos que são disparados quando é a primeira vez, pois as tabelas de segurança estão vazias.
Não sei o que fazer…
1 - O driver da conexão em produção é o mesmo usado no desenvolvimento?
2 - A versão do PHP em produção é a mesma usada no desenvolvimento?
Olá, o desenvolvimento pelo SC9 foi no 7.0.15 e no servidor está o 7.1.9 mas tem opção para o 7.0.23 que seria o mais próximo do PHP de desenvolvimento.
O Driver de desenvolvimento estou utilizado o PostgreSQL PDO, e no WampServer 3 eu ativei o php_pdo_pgsql.
Na conexão no ambiente de produção, fui lá agora para me certificar, está também com o PostgreSQL PDO, e quando testo a conexão ele conecta na hora.
Uma pergunta, na minha conexão do desenvolvimento, foi tudo feito em UTF-8 Unicode. Será que pode haver algum problema?
Outra questão é se o search_path do Postgresql, teria que estar determinando a sequência de procura do objeto sc_log (tabela), pois no INSERT ele não referencia “public.” e o banco pode não estar direcionando esse caminho.
Verifiquei no banco com show search_path, e só mostra o schema principal, e não mostra o “public”…
O recomendado é utilizar a mesma versão do PHP que foi utilizado em desenvolvimento.
Ronyan Instalei o Scripcase no Servidor dele e publicamos o projeto e o erro ocorre.
Como é postgresql , o módulo de segurança e módulo de log criar as tabelas com schema public.
Vale NM acessar remoto para avaliar, pois eu não consegui descobrir o problema apesar de vários testes.
Haroldo, consegui com o Ramon da NetMake que ele olhe todo o processo amanhã. Já enviei os backups para eles, e amanhã ele acessará o servidor com a correção. Assim que solucionar, vou postar aqui.
Refiz tudo de novo o módulo de segurança e log, eliminando as apps e refazendo as tabelas.
Há uma observação que devo considerar. Quando estou no ambiente de desenvolvimento e aplico o módulo de segurança do SC9, ele já cria o primeiro usuário “admin” na tabela sec_users, com a senha criptografada MD5 e assim que chamamos o app_login a primeira vez, ele já tem na tabela o usuário admin para acessar e criar os outros usuários, já dentro da aplicação em funcionamento.
Acontece que quando enviamos o banco para a produção, rodamos as DDLs no banco de produção, e a tabela sec_users está vazia? Como procederemos para incluir o primeiro usuário? Será que posso inserir com base na tabela do ambiente de desenvolvimento no banco de produção o registro na tabela sec_users para ver se ele já entra? essas tabelas já não deveriam eu mandar populadas pelo base de desenvolvimento pelo menos com o usuário admin?
Abraços e obrigado.
Mas se exportar as tabelas com dados a importação tem que ser idêntica.
tem algo de errado nessa transferências dos dados.
Boa noite !!
Consegui solucionar o problema da aplicação dar erro em produção ao tentar acessar a URL de aplicação, como foi dito acima.
Como o banco está em dois schemas do banco de dados, fui no console do servidor de banco de dados em produção e olhei o resultado do comando “show search_path”. Nesse caso só aparecia o nome do primeiro esquema. Executei um ALTER ROLE SET search_path TO schema1, schema2;
Em seguida consultei o comando “show search_path” e o gerenciador do banco já olhava para os dois schemas. Lembrando que o sc_log fica em “public” por padrão do SC9 que já o coloca lá quando adicionado o módulo de segurança do SC9 na aplicação.
Outro problema encontrado por mim, é que quando eu transfiro de uma estação de desenvolvimento para um de produção, as tabelas de gerenciamento de segurança, eu estava rodando apenas as DDLs no servidor, criando as tabelas sem registros. Como foi a primeira vez que eu estava publicando, achei que no ato da criação da conexão da primeira vez chamando a aplicação, algo ia ser executado e adicionado pelo menos o “admin”. Como não foi feito, eu exportei os dados das tabelas de gerenciamento de segurança do ambiente de desenvolvimento e inseri no ambiente de produção.
Pronto, tudo ok !