「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ディレクトリを削除することをおすすめします。(設定を変えていたら知りません。)