gpt4 book ai didi

grails - Grails 1.3.5:如何配置Datasource.groovy以连接到MySQL或SQL Server

转载 作者:行者123 更新时间:2023-12-02 14:55:48 25 4
gpt4 key购买 nike

我正在开发的grails应用程序可以针对MySQL或SQL Server运行。我想在application.properties文件中添加一个新属性说
database.type = MySQL //可能是SQLSERVER

如何在Datasource.groovy中获取此属性,以便如果是MySQL,则连接到MySQL服务器,或者是SQLSERVER,则连接到SQL Server?

这是正确的方法吗?我该怎么做?

编辑:阅读并搜索选项后,我想出了以下解释的方式。
我已经在/ grails-app / conf /文件夹中创建了config.properties文件。

driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
dataSource.url = jdbc:sqlserver://localhost:1433;databaseName=testDB
dataSource.username = sa
dataSource.password = sa

还更新了Config.groovy
grails.config.locations = ["classpath:config.properties"]

但我得到以下错误
无法加载指定的配置位置classpath:config.properties:无法打开类路径资源[config.properties],因为它不存在

但是如果使用
grails.config.locations = ["file:E:/workspace/SpringSource2.3.3/GRAILS_PRO/config.properties"]

该应用程序将启动并能够连接到数据库。我不想使用静态文件路径。使用类路径时有什么问题?

对于“运行应用程序”和“ war ”模式都存在相同的问题,即同一文件不存在错误。

第二次编辑:

在使用classpath导致很多挫败感并且无法使其正常工作之后,我求助于使用environment属性。由于服务器将定义CATALINA_HOME,因此我使用以下内容构建外部配置文件的路径。
def CATALINA_HOME = "CATALINA_HOME"
def CONFIG_FILE_NAME = "db_config.properties"
if(!grails.config.locations || !(grails.config.locations instanceof List)) {
grails.config.locations = []
}

if(System.getenv(CATALINA_HOME)) {
def fullPath = System.getenv(CATALINA_HOME) + File.separator + "webapps" + File.separator + "${appName}" + File.separator + "WEB-INF" + File.separator + "classes" + File.separator + CONFIG_FILE_NAME
grails.config.locations << "file:" + fullPath
} else {
println "Missing configuration!"
}

上面的解决方案是特定于Tomcat的。我真的很想看到classpath版本正常工作!

谢谢。
问候,
杰伊·钱德兰。

最佳答案

将其放在运行tomcat实例的用户的主目录中,或者应为您的应用创建一个.grails目录,并将其放在该目录下

关于grails - Grails 1.3.5:如何配置Datasource.groovy以连接到MySQL或SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com