首页 > 解决方案 > 元数据库不能与 MySQL 一起工作(开始)

问题描述

我从此处阅读了有关使用 docker 运行元数据库并从此处使用mysql 设置元数据库的文档,并按照文档中的所有说明进行操作。

这是我用来运行元数据库的 docker-compose.yml 文件:

# docker-compose.yml
version: '3'
services:
  metabase:
    image: metabase/metabase:v0.39.1
    environment:
      - MB_DB_TYPE=mysql
      - MB_DB_DBNAME=metabase
      - MB_DB_PORT=3306
      - MB_DB_USER=secretuser
      - MB_DB_PASS=secretword
      - MB_DB_HOST=secrethost
    ports:
      - 3000:3000

当我运行时,docker-compose up我收到以下错误。

metabase_1  | 2021-05-17 08:27:59,084 ERROR metabase.core :: Metabase Initialization FAILED
metabase_1  | liquibase.exception.MigrationFailedException: Migration failed for change set migrations/000_migrations.yaml::1::agilliland:
metabase_1  |      Reason: liquibase.exception.DatabaseException: (conn=32027) Table 'core_organization' already exists [Failed SQL: CREATE TABLE `metabase`.`core_organization` (`id` INT AUTO_INCREMENT NOT NULL, `slug` VARCHAR(254) NOT NULL, `name` VARCHAR(254) NOT NULL, `description` TEXT NULL, `logo_url` VARCHAR(254) NULL, `inherits` BIT(1) NOT NULL, CONSTRAINT `PK_CORE_ORGANIZATION` PRIMARY KEY (`id`), UNIQUE (`slug`)) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci]
metabase_1  |   at liquibase.changelog.ChangeSet.execute(ChangeSet.java:637)
..
..
metabase_1  | Caused by: java.sql.SQLException: Table 'core_organization' already exists
metabase_1  |   at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1688)
metabase_1  |   at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1550)
metabase_1  |   at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1513)
metabase_1  |   at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:256)
metabase_1  |   ... 57 more
metabase_1  | 2021-05-17 08:27:59,109 INFO metabase.core :: Metabase Shutting Down ...

我还尝试使用以下命令直接运行而不使用撰写文件:

docker run -d -p 3000:3000 -e "MB_DB_TYPE=mysql" -e "MB_DB_DBNAME=metabase" \
-e "MB_DB_PORT=3306" -e "MB_DB_USER=secretuser" -e 'MB_DB_PASS=secretpass' \
-e "MB_DB_HOST=secrethost" --name metabase metabase/metabase:v0.39.1

我得到与撰写文件完全相同的错误。

在进一步搜索中,我在 github 中发现了一个类似的问题,指出“表 'core_organization' 已经存在”,但是,他们声称它已经修复,但我仍然遇到问题。在问题页面中,他们建议:java -jar metabase.jar migrate force如何从 docker 运行它?

注意:我尝试多次删除所有表并从新模式开始,但效果不佳。

注意:我使用的数据库是 AWS RDS,只是为了确保它与 AWS 无关。

标签: mysqlmetabase

解决方案


问题的根源是我没有在 AWS RDS 中进行 ALTER 和 REFERENCE 的权限。一旦我获得了这些权限,一切正常。


推荐阅读