superset再インストール時、admin登録ではまった。

「superset」というBIツールを昔使っていて、再度使おうとしてインストールしたらadminユーザーの作成で失敗してしまったので、対処法と合わせてまとめておく。

インストールした環境は以下のような感じ。

過去にsupersetを入れていたことがあったが、すでに削除済み。
今回改めて使う要望が出てきたので、pipでsupersetをインストールしてadminユーザーの登録を行おうとした。

$ mkdir superset
$ cd superset
$ pip install superset
$ fabmanager create-admin --app superset
# 必要な内容を順次入力...
Recognized Database Authentications.
2017-09-29 08:45:02,030:ERROR:flask_appbuilder.security.sqla.manager:Error adding new user to database. (sqlite3.IntegrityError) UNIQUE constraint failed: ab_user.email [SQL: 'INSERT INTO ab_user (first_name, last_name, username, password, active, email, last_login, login_count, fail_login_count, created_on, changed_on, created_by_fk, changed_by_fk) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'] [parameters: ('admin', 'user', 'admin', 'pbkdf2:sha256:50000$wxX0yExx$a0d32e3c3afe3fa7a5f8e83e72fd7b5b2c7ec2729a1cc46ac2c86ed542074326', 1, 'admin@fab.org', None, None, None, '2017-09-29 08:45:02.029150', '2017-09-29 08:45:02.029159', None, None)]
No user created an error occured

というわけでエラーが発生。
内容を見てみると、「ユニークなはずのab_user.emailにすでに登録されているものを書き込もうとしているのでエラー」と言われている。
なので、過去に登録していたadminユーザー情報が残っていたために、登録に失敗してしまった。

違うメールアドレスで登録しなおせば済む話なのだろうが、過去情報が残っていると何かと不便だと思ったので、過去のsupersetの情報を削除しようと試みた。
が、ドキュメントを探しても中々見つからず。(グーグル力が欲しい。)
公式のsupersetのインストール方法のページを見ていたら、

SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'

と書いてある。
これを消せば良いのかな?と思ったので、早速検索してみた。

$ sudo find / -name superset.db
/Users/piruty/.superset/superset.db

お、いるではないか。
どうも初期設定のままだと作られたsupersetの設定とかデータとかはこの.supersetディレクトリ内に保存されるらしい。
なので、このディレクトリ毎削除して再度adminユーザー登録を行うと無事に完了した。

supersetをクリーンインストールし直す場合は、.supersetディレクトリを削除することをおすすめします。(設定を変えていたら知りません。)