Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
赫罗库+;Grails-在heroku上构建应用程序时缺少数据库URL_Heroku - Fatal编程技术网

赫罗库+;Grails-在heroku上构建应用程序时缺少数据库URL

赫罗库+;Grails-在heroku上构建应用程序时缺少数据库URL,heroku,Heroku,我正在尝试使用grails教程将我的应用程序连接到共享数据库5MB。我正在使用Grails2.1.0。在我的本地机器上,当我运行heroku配置时,我可以看到设置了数据库的URL,但在执行git push之后。。。我的生成因错误而停止: Error packaging application: Error loading DataSource.groovy: null (Use --stacktrace to see the full trace) Failed to build app Her

我正在尝试使用grails教程将我的应用程序连接到共享数据库5MB。我正在使用Grails2.1.0。在我的本地机器上,当我运行heroku配置时,我可以看到设置了数据库的URL,但在执行git push之后。。。我的生成因错误而停止:

Error packaging application: Error loading DataSource.groovy: null (Use --stacktrace to see the full trace)
Failed to build app
Heroku push rejected, failed to compile Grails app
所以我添加了日志记录来查看heroku上的环境。我已将println System.env添加到Datasource.groovy,但找不到任何数据库URL:

.[OLDPWD:/app/tmp/repo.git/.cache, SHELL:/bin/bash, SHLVL:2, GIT_DIR:., JAVA_HOME:/usr/lib/jvm/java-6-openjdk, PATH:/app/tmp/repo.git/.cache/.grails/bin::/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin, SSH_CLIENT:XXX, MAIL:XXX, USER:XXX, LOG_TOKEN:t.9e79a5be-dfa2-446e-9f83-f6b4ebbc4eb7, GRAILS_HOME:/app/tmp/repo.git/.cache/.grails, PWD:XXX, HOME:/app/, LOGNAME:u11846, _:/app/tmp/repo.git/.cache/.grails/bin/grails, SSH_CONNECTION:XXX, LD_LIBRARY_PATH:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64]
我已与heroku插件确认已为我的应用程序安装了共享数据库:

heroku addons
=== XXX Configured Add-ons
shared-database:5mb
当我执行heroku配置时

heroku config
=== Config Vars for XXX

DATABASE_URL:        postgres://XXX
JAVA_OPTS:           -Xmx384m -Xss512k -XX:+UseCompressedOops
SHARED_DATABASE_URL: postgres://XXX
Datasource.groovy:

production {
    dataSource {
        dbCreate = "update"
        driverClassName = "org.postgresql.Driver"
        dialect = org.hibernate.dialect.PostgreSQLDialect

        println System.env
        println System.env.DATABASE_URL
        uri = new URI(System.env.DATABASE_URL)
        println uri

        url = "jdbc:postgresql://" + uri.host + uri.path
        username = uri.userInfo.split(":")[0]
        password = uri.userInfo.split(":")[1]
    }
}
在BuildConfig.groovy中,我添加了

runtime 'postgresql:postgresql:8.4-702.jdbc3'
我可以在本地启动应用程序,并将数据库URL设置为本地postgresql。我正在建造战争,并在码头上运行


有人能告诉我我遗漏了什么吗?

应用程序环境变量在构建时不可用。您的代码需要能够相应地处理这个问题。或者,您可以启用新的
user\u env\u compile
Heroku Labs功能,该功能可以在构建时将环境变量保存在那里: