AWS Athenaで不要なデータベースを削除しようとして、エラーになることがある。
原因と対処法を整理する。
発生したエラー
以下のエラーが発生してデータベースを削除できない。
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.))データベースにテーブルやビューが残っているため、そのままでは削除できない。
解決方法
CASCADEオプションを使うと、データベース内のテーブルやビューも含めて削除できる。
DROP SCHEMA IF EXISTS database_name CASCADE;DROP DATABASEの代わりにDROP SCHEMAを使い、CASCADEを付ける。
これで、データベース内のすべてのオブジェクトが削除される。
注意点
CASCADEを使うと、データベース内のすべてのテーブルとビューが削除される。
誤って重要なデータベースを削除しないよう、事前に確認すること。
参考
まとめ
Athenaで空でないデータベースを削除するには、DROP SCHEMA ... CASCADEを使う。
ドキュメントに普通に書いてある内容だが、エラーメッセージから解決方法がすぐ分からないことがあるため、メモとして残しておく。
hsb.horse