我正在使用基于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的失败大小。
答案 0 :(得分:0)
我已经解决了这个登录问题 - 因为我有两个单独的Dbs,并且将两个密码都设置为非空值,我必须为每个单独的Db明确定义密码。
因此,在DataSource.groovy中,我现在有两组登录/密码定义:
dataSource {
username = "sa"
password = "value01"
}
dataSource_publish {
username = "sa"
password = "value02"
}
如果没有这个我相信登录&密码自动设置为'sa'和“”(即:null)。因此,在启动时没有dataSource_publish块,应用程序尝试使用空密码登录dataSource_publish dB,但未成功。
一旦你看到它就很明显了。