使用ClearDB在Heroku上设置Grails 2.3.5应用程序时出现问题
我正在Heroku服务器上安装Grails 2.3.5应用程序,当tomcat启动时,我不断遇到以下错误:使用ClearDB在Heroku上设置Grails 2.3.5应用程序时出现问题,grails,heroku,cleardb,Grails,Heroku,Cleardb,我正在Heroku服务器上安装Grails 2.3.5应用程序,当tomcat启动时,我不断遇到以下错误: Caused by: java.sql.SQLException: Driver:com.mysql.jdbc.Driver@5a7359fe returned null for URL:jdbc:h2:mem:grailsDB;MVCC=TRUE;LOCK_TIMEOUT=10000 我没有使用h2作为数据库。我想使用ClearDB。我的环境变量看起来都是正确的,DataSo
Caused by: java.sql.SQLException: Driver:com.mysql.jdbc.Driver@5a7359fe returned null for URL:jdbc:h2:mem:grailsDB;MVCC=TRUE;LOCK_TIMEOUT=10000
我没有使用h2作为数据库。我想使用ClearDB。我的环境变量看起来都是正确的,DataSource.groovy中的所有内容看起来都是正确的。我甚至将连接字符串设置为硬编码,看看这是否会有所不同。娜达
production {
datasource {
dbCreate = "create-drop"
url = "jdbc:mysql://us-cdbr-east-05.cleardb.net/heroku_5a952ab6aXXXXXXX?reconnect=true"
username = "XXXXX"
password = "xxxxx"
}
}
很明显我错过了什么,但我看不到什么。
生产设置从哪里获取h2连接字符串 您没有显示完整的
DataSource.groovy
文件,但它的顶部可能有H2驱动程序(drivercassname=“org.H2.driver”
)。其中的值为默认值,特定于环境的块将合并到其中以创建最终设置。您可以在生产
块中覆盖该选项
production {
datasource {
dbCreate = "create-drop"
url = "jdbc:mysql://us-cdbr-east-05.cleardb.net/heroku_5a952ab6aXXXXXXX?reconnect=true"
username = "XXXXX"
password = "xxxxx"
driverClassName = 'com.mysql.jdbc.Driver'
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
}
}
此外,在使用MySQL时,应该始终指定方言。Grails在大多数情况下都能自动检测方言,但无法确定您使用的是MyISAM还是InnoDB,因此它默认为使用为整个服务器配置的默认引擎类型的方言。较新版本的MySQL默认为InnoDB,在任何版本中都可以轻松更改,但如果不更改,或者更改为较旧版本,则最终将使用非事务性MyISAM表。指定方言可确保应用程序使用正确的表类型。您不会显示完整的
DataSource.groovy
文件,但它的顶部可能有H2驱动程序(drivercassname=“org.H2.driver”
)。其中的值为默认值,特定于环境的块将合并到其中以创建最终设置。您可以在生产
块中覆盖该选项
production {
datasource {
dbCreate = "create-drop"
url = "jdbc:mysql://us-cdbr-east-05.cleardb.net/heroku_5a952ab6aXXXXXXX?reconnect=true"
username = "XXXXX"
password = "xxxxx"
driverClassName = 'com.mysql.jdbc.Driver'
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
}
}
此外,在使用MySQL时,应该始终指定方言。Grails在大多数情况下都能自动检测方言,但无法确定您使用的是MyISAM还是InnoDB,因此它默认为使用为整个服务器配置的默认引擎类型的方言。较新版本的MySQL默认为InnoDB,在任何版本中都可以轻松更改,但如果不更改,或者更改为较旧版本,则最终将使用非事务性MyISAM表。指定方言可确保应用程序使用正确的表类型。我找到了问题的原因。 数据源的代码块在源中有小写的“s”。它应该是数据源,而不是数据源 如果缺少此块,则默认为名为“grailsDB”的h2数据库。我在任何地方都找不到这个文档,因此我感到很困惑
检查您的案例我找到了问题的原因。 数据源的代码块在源中有小写的“s”。它应该是数据源,而不是数据源 如果缺少此块,则默认为名为“grailsDB”的h2数据库。我在任何地方都找不到这个文档,因此我感到很困惑
检查您的案例强>不。在我的数据源块中,我指定了mysql驱动程序。我甚至将driverClassName添加到生产块中。同样的错误,不。在我的数据源块中,我指定了mysql驱动程序。我甚至将driverClassName添加到生产块中。同样的错误。