H2数据库登录问题

时间:2016-08-17 12:14:48

标签: database grails gorm

我正在使用基于Grails的本地文件H2 Hibernate数据库。

我在dataSource.groovy中设置了两个单独的文件类型dBs:

 dataSource {
    logSql = false
    pooled = true
    dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
    url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}

dataSource_publish {
    logSql = false
    pooled = true
    dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
    url = "jdbc:h2:/dbmak/devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE"
}

它们都在项目根目录中生成文件:

  

devDb.h2.db和dbmak.h2.db

我在dB中做的最后一件事就是修改了' sa' password - 更喜欢将其设置为非空值。

我通过用户' sa'登录dbconsole来做到这一点。然后使用命令:

set password 'newPassword'

这似乎工作正常。

然而,当我现在尝试在GGTS中重新启动应用程序时,我收到错误:

org.h2.jdbc.JdbcSQLException: Wrong user name or password [28000-173]

我已尝试使用原始的空密码以及过去曾有效的其他登录/密码组合,但仍会出现上述错误。

我做的另一件事是用最近备份的副本替换h2.db文件,但仍然没有成功。我想知道hibernate系统数据是否包含' sa'密码,驻留在其他地方,而不是这些单独的应用程序数如果我在系统工作时有h2.db文件的副本,我可以简单地用现在失败的修改后的文件替换它。

还有一件事 - 当我比较当前的大小(失败 - 大小为230kb)debdb.h2.db文件与备份文件(大小为1252kb)时,我注意到它们有很大不同在大小,当我尝试使用db文件的备份副本重新启动应用程序时。应用程序无法启动后,大小将恢复为230kb的失败大小。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个登录问题 - 因为我有两个单独的Dbs,并且将两个密码都设置为非空值,我必须为每个单独的Db明确定义密码。

因此,在DataSource.groovy中,我现在有两组登录/密码定义:

dataSource {
username = "sa"

password = "value01"

}

dataSource_publish {

username = "sa"
password = "value02"

}

如果没有这个我相信登录&密码自动设置为'sa'和“”(即:null)。因此,在启动时没有dataSource_publish块,应用程序尝试使用空密码登录dataSource_publish dB,但未成功。

一旦你看到它就很明显了。