Problema na hora de gravar múltiplos arquivos no banco de dados

Bom dia, tudo bem? Espero que sim.

Meu nome é Luis Henrique. Estamos usando o ScriptCase versão 9.13.005 (2).

Por favor, vocês poderiam nos ajudar a corrigir um problema?

Possuímos um formulário de cadastro e dentro dele há um campo do tipo “Documento (Banco de Dados)” no qual permite-nos cadastrar múltiplos arquivos em uma tabela do banco de dados cujo tipo do campo é BYTEA e o banco de dados utilizado é PostgreSQL.

Estava funcionando normalmente até uns tempos atrás porém agora, quando clicamos no botão “Salvar” após ter selecionado pelo menos um arquivo, o ScriptCase gera um erro: PDOException: "There is already an active transaction in…" conforme ilustra a imagem em anexo “Erro.png”.

Não estamos trabalhando no formulário com os eventos de transação (sc_begin_trans, sc_commit_trans e sc_rollback_trans). Tudo é executado pelo próprio ScriptCase.

Estamos enviando a vocês também 3 fotos (“Parte 1.png”, “Parte 2.png” e “Parte 3.png”) que contém a configuração do campo. O restante das configurações dele que estariam abaixo estão em branco - valor padrão).

Como podemos fazer para solucionar este problema para que os usuários possam voltar a anexar múltiplos arquivos novamente?

Desde já agradecemos: Muito obrigado.

Que Deus vos abençoe.

Veja se isso funciona:

Ajustar a Conexão

Às vezes, a persistência da conexão mantém o estado da transação “sujo” entre requisições.

  1. Vá em Banco de Dados > Editar Conexão.
  2. Selecione a conexão do PostgreSQL utilizada.
  3. Na aba Avançado, verifique se a opção Conexão Persistente está marcada.
  4. Se estiver marcada, desmarque-a.
  5. Salve e teste.

Recomendação Técnica (Melhor Prática)

Embora salvar no banco (BYTEA) pareça prático, para o PostgreSQL + PHP, isso gera um “overhead” imenso de memória e transação (o erro que você está vendo).

Se o problema persistir mesmo após o passo acima, a solução definitiva recomendada é alterar o Tipo do Dado de Documento (Banco de Dados) para Documento (Nome do Arquivo).

  • Isso salva o arquivo numa pasta no servidor (disco) e apenas o nome no banco.
  • Elimina completamente o erro de transação BYTEA e deixa seu backup de banco de dados muito mais leve e rápido.
2 Curtidas

Veja também no banco que tipo de transação fica ativa e impede que você faça os inserts para poder começar a diagnosticar se é mesmo o Scriptcase.

3 Curtidas

Bom dia, Jailton, tudo bem? Espero que sim.

A “Conexão Persistente” está marcada como não.

E no caso precisamos mesmo salvar os arquivos na base de dados.

Muito obrigado pela sua dica. Que Deus te abençoe.

Bom dia, Alexandre, tudo bem? Espero que sim.

Sim. Estava tudo funcionando certinho e provavelmente foi depois de uma atualização que este problema começou a acontecer.

O restante da aplicação está funcionando normalmente inclusive o Upload de arquivos simples. Só o de múltiplos arquivos é que está dando erro.

Que Deus te abençoe e obrigado pela dica.

Se acha que é um bug… Pelo bugs@netmake.com.br o retorno será mais rápido.

Bom dia, Alexandre, tudo bem? Espero que sim.

Sim, eu já enviei. Estou aguardando eles.

Que Deus te abençoe.

1 Curtida