Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用OpenShift环境变量配置MySQL数据库_Java_Spring Boot_Openshift_Jhipster - Fatal编程技术网

Java 如何使用OpenShift环境变量配置MySQL数据库

Java 如何使用OpenShift环境变量配置MySQL数据库,java,spring-boot,openshift,jhipster,Java,Spring Boot,Openshift,Jhipster,所以我用JHipster生成了一个应用程序 在本地,我只需修改application-dev.yml/application-prod.yml中的数据库信息,一切都正常 现在我想在OpenShift上部署我的应用程序。我尝试将环境变量名放入application-xxx.yml中,但它返回null。因此,我修改了DatabaseConfiguration.java以跳过从.yml文件读取信息,直接从环境变量读取信息 if(System.getenv("OPENSHIFT_MYSQL_DB_HOS

所以我用JHipster生成了一个应用程序

在本地,我只需修改application-dev.yml/application-prod.yml中的数据库信息,一切都正常

现在我想在OpenShift上部署我的应用程序。我尝试将环境变量名放入application-xxx.yml中,但它返回null。因此,我修改了
DatabaseConfiguration.java
以跳过从.yml文件读取信息,直接从环境变量读取信息

if(System.getenv("OPENSHIFT_MYSQL_DB_HOST") != null && System.getenv("OPENSHIFT_MYSQL_DB_PORT") != null){
    config.addDataSourceProperty("url", "jdbc:mysql://"+System.getenv("OPENSHIFT_MYSQL_DB_HOST")+":"+System.getenv("OPENSHIFT_MYSQL_DB_PORT")+"/zetravelcloud?useUnicode=true&characterEncoding=utf8");
}
if (System.getenv("OPENSHIFT_MYSQL_DB_USERNAME") != null) {
    config.addDataSourceProperty("user", System.getenv("OPENSHIFT_MYSQL_DB_USERNAME"));
} else {
    config.addDataSourceProperty("user", ""); // HikariCP doesn't allow null user
}
System.out.println(System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD"));
if (System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD") != null) {
    config.addDataSourceProperty("password", System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD"));
} else {
    config.addDataSourceProperty("password", ""); // HikariCP doesn't allow null password
}
而不是

config.addDataSourceProperty("url", dataSourceProperties.getUrl());
if (dataSourceProperties.getUsername() != null) {
    config.addDataSourceProperty("user", dataSourceProperties.getUsername());
} else {
    config.addDataSourceProperty("user", ""); // HikariCP doesn't allow null user
}
if (dataSourceProperties.getPassword() != null) {
    config.addDataSourceProperty("password", dataSourceProperties.getPassword());
} else {
    config.addDataSourceProperty("password", ""); // HikariCP doesn't allow null password
}
现在的问题是:如何正确使用配置类中的OpenShift环境变量成功连接到数据库?


附加问题:解决这个问题的更好方法是什么?我觉得把变量名放在
DatabaseConfiguration
类中是不对的

在application.yml中使用${OPENSHIFT\u MYSQL\u DB\u HOST}语法是一种方法,应该可以使用。

在application.yml中使用${OPENSHIFT\u MYSQL\u DB\u HOST}语法是一种方法,应该可以使用。你是怎么尝试的?哦,谢谢,显然我必须重新启动我的windows机器才能工作。我撤销了我的课程修改,发动了新的战争。我将查看openshift日志,看看错误是什么。如果你把这个评论作为一个答案,我很乐意接受它作为正确的答案。再次感谢