微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Metabase 无法与 MySQL 一起工作启动

如何解决Metabase 无法与 MySQL 一起工作启动

我阅读了有关 running metabase with docker from heresetting metabase up with mysql from here 的文档,并按照文档中的所有说明进行操作。

这是我用来运行元数据库的 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

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

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

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。