mysql - 元数据库不能与 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 无关。
解决方案
问题的根源是我没有在 AWS RDS 中进行 ALTER 和 REFERENCE 的权限。一旦我获得了这些权限,一切正常。
推荐阅读
- analytics - 振幅分析的漏斗操作流程是怎样的?
- ios - Swift:UIPanGesture 获取视图的水平位置
- c# - 使用 LINQ 或实体框架拆分数据表以列出对象 C#
- python - 使用列表推导:对不是字符串或另一个列表元素的列表元素进行计算
- excel - 在单元格中使用 IF() 语句运行 Sub 过程
- java - 需要帮助访问内部类中的变量for循环
- java - RecyclerView 没有在活动开始时调用 onCreateViewHolder
- ssl - Issue connecting to SSL secured Kafka
- django - Django] Saving multiple images by formset doesn't work
- ios - iOS 应用程序的 Citrix MDX 工具包包装失败并出现“Mach Header contains Invalid Flag bits ...”错误