Apache Superset:从 sqlite 迁移到 Postgres

Apache Superset: Migrate from sqlite to Postgres

当我从 sqlite 迁移到 postgres 时,我无法对新数据库进行任何写入。 日志显示以下错误:

Unique key conflict id= 10, already exist in table ab_user

两种可能的情况:

场景 A:您是从头开始,想使用 Postgres 而不是 sqlite。

  1. 安装 postgres
  2. 将 postgres 连接字符串添加到 superset_config.py 文件
  3. 运行 superset db upgrade 这将在 Postgres
  4. 上创建所有 table
  5. 运行 superset init
  6. 启动超级集

场景 B:您有一个已经填充的 sqliteDB 并希望将其迁移到 Postgres。

  1. 安装 postgres
  2. 将 postgres 连接字符串添加到 superset_config.py 文件
  3. 将所有 tables 从 sqlite 复制到 postgres,有很多方法可以做到这一点。我的首选方法是使用 ruby
  4. 复制数据后 运行 superset db upgradesuperset init
  5. 完成此操作后,您需要在 table information_schema.sequences 上更新 Postgres 上的键序列,否则您将遇到唯一键冲突错误。
  6. 启动超级集

在这两种情况下,您应该在 运行 superset db upgrade 之后看到下面的消息,这意味着您已经正确配置了 superset_config.py。:

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.

通过设置环境变量确保超集正在查看配置文件:

export PYTHONPATH=/home/local_settings/:$PYTHONPATH
OR
export SUPERSET_CONFIG_PATH=/home/local_settings/