【问题标题】:Get mysql connected with SpringBoot application in Openshift v3在 Openshift v3 中获取与 Spring Boot 应用程序的 mysql 连接
【发布时间】:2018-06-09 22:59:00
【问题描述】:

我无法将我的 SpringBoot 应用程序与 Openshift v3 中的 mySQL POD 链接。

到目前为止我做了什么:

  • 在 openshift v3 中启动并运行了一个基本的 Spring Boot 应用程序。
  • 添加了 mysql 应用程序。 pod 已启动并正常运行。
  • 在我的 Spring Boot 应用的 application.properties 中添加了数据源配置:

    spring.datasource.url=jdbc:mysql://mysql:3306/${MYSQL_DATABASE}\ spring.datasource.username=${MYSQL_USER} spring.datasource.password=${MYSQL_PASSWORD}

  • 通过执行以下命令将 spring boot 应用程序与 mysql db 链接:

oc env dc shoppinglist -e MYSQL_USER=dbuser -e MYSQL_PASSWORD=dbpassword -e MYSQL_DATABASE=shoppingdb

deploymentconfig“购物清单”已更新

但是,spring boot pod 正在崩溃,因为它无法使用给定用户访问 mysql db:

 2017-12-29 13:35:00.806 ERROR 1 --- [           main]
 o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial
 connections of pool. java.sql.SQLException: **Access denied for user
 ''@'172.17.0.7'** (using password: YES)

不知何故,用户名丢失了。我猜我的 oc env 设置有问题?我没有胶水……

到目前为止,我不知道出了什么问题,并感谢任何帮助。谢谢!

【问题讨论】:

  • 添加env变量后,是否重新部署pod?因为 env 变量不会立即设置,所以只有在全新部署后才会选择新配置。
  • 在部署配置上设置环境变量在正常情况下会触发自动重启。问题是application.properties 中的环境变量引用是否被扩展。无论如何,运行 oc debug dc shoppinglist 并在 shell 提示符下运行 env 以验证环境变量是否已作为第一步传递到容器中。
  • 我重新部署了,但结果没有改变。
  • @Graham Dumpleton:我也试过oc debug dc shoppinglist。回复是:Error from server (NotFound): pods "dc" not found我想知道为什么这不起作用,因为当我执行 oc get all 时,它除了其他人之外还返回dc/shoppinglist所以语法是正确的,不是吗?
  • 试试oc debug dc/shoppinglist。通常命令将接受单个组合参数,或作为拆分值。也许由于某种原因该命令没有。

标签: mysql spring-boot openshift


【解决方案1】:

新年快乐!感谢大家支持我找到我的问题的解决方案。 我学到了很多,但最后这只是我的 application.properties 中的一个错字:

spring.datasource.url=jdbc:mysql://mysql:3306/${MYSQL_DATABASE}\ 

这可能是一个复制和粘贴问题(令人尴尬..) {MYSQL_DATABASE}all 之后的 反斜杠 我一直在监督。

再次感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2019-06-01
    • 2021-04-24
    • 2018-09-26
    • 1970-01-01
    相关资源
    最近更新 更多