【发布时间】:2021-05-17 09:09:03
【问题描述】:
我阅读了有关 running metabase with docker from here 和 setting 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 ...
我也尝试过直接运行而不使用 compose file 使用这个命令:
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 无关。
【问题讨论】: