如何解决Metabase 无法与 MySQL 一起工作启动
我阅读了有关 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 ...
我也尝试使用以下命令直接运行而不使用撰写文件:
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 举报,一经查实,本站将立刻删除。