TotalCross / totalcross

TotalCross is a Software Development Kit that helps cross platform application development. Currently supported platforms are: Windows, Wince, Android, iOS, Linux and Linux ARM for embedded systems.
https://www.totalcross.com
GNU Lesser General Public License v2.1
222 stars 40 forks source link

litebase.TableNotClosedException Table not closed properly #345

Open MauroLacerdaNG2021 opened 3 years ago

MauroLacerdaNG2021 commented 3 years ago

Describe the bug

Estou recebendo o erro abaixo. Gostaria de saber como resolver. Peço também a explicação sobre a função do purge e do recoverupdate

Devices:

Please complete the following information:

flsobral commented 3 years ago

Olá @MauroLacerdaNG2021 .

Essa exceção indica que a tabela não foi fechada na última execução, e nesse caso basta utilizar o método recoverTable de LitebaseConnection passando o nome da tabela para que ela seja corrigida.

No Litebase, quando um registro é deletado de uma tabela, ele não é imediatamente removido do arquivo da tabela. Os dados são deletados apenas logicamente, ficando apenas inacessível via consulta, mas existindo fisicamente no arquivo. O método purge pode ser usado para efetivamente remover registros deletados dos arquivos físicos e recriar os índices da tabela. O uso do purge periodicamente (o intervalo de tempo depende de como o banco é usado) evita que os arquivos do banco ocupem mais espaço em disco que o necessário e também contribui para manutenção da performance dos índices associados a tabela.

Ambas as operações podem ser executadas automaticamente pela aplicação em caso de exceção ou para limpeza dos dados. Elas não são feitas automaticamente pelo próprio Litebase para permitir que o usuário tenha a oportunidade dele mesmo abrir os arquivos do banco para tentar recuperar registros apagados através de delete ou operações interrompidas pelo fechamento inesperado do banco, algo que não pode ser feito após um recover/purge.

MauroLacerdaNG2021 commented 3 years ago

Boa tarde,

Você teria um exemplo de código usando a melhor pratica para CREATE, INSERT, UPDATE e Delete?

Vi muitos exemplos, contudo, não sei qual seria o mais indicado para evitar falhas.

Atenciosamente,

Em 26/05/2021 17:21, flsobral escreveu:

Olá @MauroLacerdaNG2021 https://github.com/MauroLacerdaNG2021 .

Essa exceção indica que a tabela não foi fechada na última execução, e nesse caso basta utilizar o método recoverTable de LitebaseConnection passando o nome da tabela para que ela seja corrigida.

No Litebase, quando um registro é deletado de uma tabela, ele não é imediatamente removido do arquivo da tabela. Os dados são deletados apenas logicamente, ficando apenas inacessível via consulta, mas existindo fisicamente no arquivo. O método purge pode ser usado para efetivamente remover registros deletados dos arquivos físicos e recriar os índices da tabela. O uso do purge periodicamente (o intervalo de tempo depende de como o banco é usado) evita que os arquivos do banco ocupem mais espaço em disco que o necessário e também contribui para manutenção da performance dos índices associados a tabela.

Ambas as operações podem ser executadas automaticamente pela aplicação em caso de exceção ou para limpeza dos dados. Elas não são feitas automaticamente pelo próprio Litebase para permitir que o usuário tenha a oportunidade dele mesmo abrir os arquivos do banco para tentar recuperar registros apagados através de delete ou operações interrompidas pelo fechamento inesperado do banco, algo que não pode ser feito após um recover/purge.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/TotalCross/totalcross/issues/345#issuecomment-849091413, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUGRRA7BCRFICI4UL7J3WTLTPVJ57ANCNFSM45PBDJTA.

-- Mauro Lacerda Gestor de TI

off.: + 55 (11) 4107 0662 / cell.: +55 (24) 99949 0458 Av. Regente Feijó, 944 - sala 510 B - Vila Regente Feijó / São Paulo / Brasil www.nginfra.com.br | www.seureca.veolia.com

-- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus