superset 出现数据库错误

出错log:

sqlalchemy.exc.OperationalError
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: dbs.impersonate_user 
[SQL: 'SELECT dbs.created_on AS dbs_created_on, dbs.changed_on AS dbs_changed_on, dbs.id AS dbs_id, dbs.verbose_name AS dbs_verbose_name, dbs.database_name AS dbs_database_name, dbs.sqlalchemy_uri AS dbs_sqlalchemy_uri, dbs.password AS dbs_password, dbs.cache_timeout AS dbs_cache_timeout, dbs.select_as_create_table_as AS dbs_select_as_create_table_as, dbs.expose_in_sqllab AS dbs_expose_in_sqllab, dbs.allow_run_sync AS dbs_allow_run_sync, dbs.allow_run_async AS dbs_allow_run_async, dbs.allow_ctas AS dbs_allow_ctas, dbs.allow_dml AS dbs_allow_dml, 
dbs.force_ctas_schema AS dbs_force_ctas_schema, dbs.extra AS dbs_extra, dbs.perm AS dbs_perm, 
dbs.impersonate_user AS dbs_impersonate_user, dbs.created_by_fk AS dbs_created_by_fk, 
dbs.changed_by_fk AS dbs_changed_by_fk \nFROM dbs \nWHERE dbs.id = ?'] [parameters: (1,)]

错误就是,表dbs中 缺少了impresonate_user字段。


背景:

      superset新版本中文汉化做的很棒,所以我打算升级一下子。

      在anaconda中使用   pip install superset指令安装superset发行包0.19.1版本 ,‘superset db upgrade’ 用来初始化(或者升级)数据库,运行以后 汉化并不是很好。

但是,我从github上git下来的用来develop的最新代码,汉化是很完美的,可以看出来发行版0.19.1和代码最新版不是一个版本。所以我系统的superset初始化的数据库和develop版本的数据库也不同步,develop版本要更新一点,但后者肯定兼容前者的版本。

方法一:

    所以,对于数据库初始化,我把develop版本中 ’superset/migrations/versions‘中的所有文件,拷贝到系统的’superset/migrations/versions‘路径下,替换里面所有的文件。

然后,再调用系统的'superset db  upgrade'语句,完成数据库的更新,这样我的develop版本的code和数据库就统一啦,这里的数据库文件在 ~/.superset/superset.db处。

方法二:

   系统的数据库和develop版本的数据库文件不共用。

  这里可以在 ~/.bash_profile中设置 SUPERSET_HOME=develop版本的路径。这样再执行superset db upgrade的时候,会在SUPERSET_HOME路径下生成一个新的superset.db文件,哦哦,也要把develop版中的versions文件复制到系统版中的versions去,哎,这样看,两种方法差不多啊。。


最后,来看下安装superset时候,几个语句的含义:

# Install superset  安装superset
pip install superset

# Create an admin user (you will be prompted to set username, first and last name before setting a password)
这里是使用 flask appbuilder 的manager工具给superset这个app生成用户名和密码
 fabmanager create-admin --app superset

# Initialize the database
初始化或者升级数据库文件,根据superset/migration/version/里面的文件,初始化或更新~/.superset/superset.db数据库
 superset db upgrade

# Load some data to play with
加载数据到superset.db中去
 superset load_examples

# Create default roles and permissions
 superset init

# Start the web server on port 8088, use -p to bind to another port
运行
 superset runserver


好啦,终于把superset升级了,下一步赶紧把之前的内容整合过来吧!





你可能感兴趣的:(superset)