logo hsb.horse
← Voltar para o índice do blog

Blog

Como excluir um banco de dados não vazio no AWS Athena

O que fazer quando a exclusão de um banco de dados não vazio no AWS Athena falha. Uma nota rápida sobre o uso de DROP DATABASE CASCADE.

Publicado:

Às vezes dá erro ao tentar excluir um banco de dados desnecessário no AWS Athena.

Aqui fica um resumo rápido da causa e da solução.

Erro encontrado

O erro abaixo aparece e o banco de dados não pode ser excluído.

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
MetaException(message:Unable to drop database: InvalidOperationException(message:Database database_name is not empty.))

A base ainda contém tabelas ou views, então não pode ser removida desse jeito.

Solução

Use a opção CASCADE para apagar também as tabelas e views dentro do banco junto com o próprio banco.

DROP SCHEMA IF EXISTS database_name CASCADE;

Use DROP SCHEMA no lugar de DROP DATABASE e adicione CASCADE.

Assim, todos os objetos dentro do banco serão removidos.

Atenção

Ao usar CASCADE, todas as tabelas e views dentro do banco serão apagadas.

Vale conferir antes para não remover um banco importante por engano.

Referência

Resumo

Para excluir um banco de dados não vazio no Athena, use DROP SCHEMA ... CASCADE.

A resposta está escrita normalmente na documentação, mas nem sempre a mensagem de erro deixa isso claro de imediato, então deixo esta nota aqui.