我正在使用 play framework 1.2.7、gae 模块 1.6.0 和 siena 模块 2.0.7(也测试了 2.0.6)。这是一个简单的项目,应该在 App Engine 上运行并连接到 Google Cloud SQL 中的 MySQL 数据库。我的项目在本地运行良好,但无法连接到生产中的数据库。查看日志,它看起来像是在使用 postgresql 驱动程序而不是 mysql 驱动程序。
应用程序.conf
# db=mem
db.url=jdbc:google:mysql://PROJECT_ID:sienatest/sienatest
db.driver=com.mysql.jdbc.GoogleDriver
db.user=root
db.pass=root
这是崩溃堆栈跟踪
play.Logger niceThrowable: Cannot connected to the database : null
java.lang.NullPointerException
at com.google.appengine.runtime.Request.process-a3b6145d1dbbd04d(Request.java)
at java.util.Hashtable.put(Hashtable.java:432)
at java.util.Properties.setProperty(Properties.java:161)
at org.postgresql.Driver.loadDefaultProperties(Driver.java:121)
at org.postgresql.Driver.access$000(Driver.java:47)
at org.postgresql.Driver$1.run(Driver.java:88)
at java.security.AccessController.doPrivileged(AccessController.java:63)
at org.postgresql.Driver.getDefaultProperties(Driver.java:85)
at org.postgresql.Driver.connect(Driver.java:231)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at play.modules.siena.GoogleSqlDBPlugin.onApplicationStart(GoogleSqlDBPlugin.java:103)
at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:525)
at play.Play.start(Play.java:533)
at play.Play.init(Play.java:305)
这里发生了什么?我正在指定正确的驱动程序和 url 架构,它使用的是 postgresql 驱动程序。Google Cloud SQL API 访问已启用,应用程序被允许连接到 mysql 实例,我没有使用 db=mem,...我卡住了,不知道如何前进!:-((
更新:我以为我找到了解决方案,但事实并非如此。如果我保留%prod
. 前缀并正常创建一个战争(或者只是不定义任何数据库属性),那么应用程序将使用Google DataStore
而不是Cloud SQL
. 如果我创建最后添加的 war 文件--%prod
(或者只是删除%prod
application.conf 中的 . 前缀),那么它将一直无法连接到显示相同初始错误的数据库。
请问有什么想法吗?