h2Database 的默认详细信息
Posted
技术标签:
【中文标题】h2Database 的默认详细信息【英文标题】:Default details for a h2Database 【发布时间】:2013-09-03 09:35:28 【问题描述】:与this question 类似的问题,但没有帮助。
我目前在亚马逊主机上的 Jboss 6 服务器上部署了 h2。我正在使用以下详细信息尝试连接
Connection conn = DriverManager.getConnection(
"jdbc:h2:~/test", "-user",
"");
我尝试了许多其他组合,包括上面链接的组合,并使用了教程中提供的详细信息,但似乎没有任何效果。以下是堆栈跟踪。
org.h2.jdbc.JdbcSQLException: Wrong user name or password [28000-173]
org.h2.message.DbException.getJdbcSQLException(DbException.java:331)
org.h2.message.DbException.get(DbException.java:171)
org.h2.message.DbException.get(DbException.java:148)
org.h2.message.DbException.get(DbException.java:137)
org.h2.engine.Engine.validateUserAndPassword(Engine.java:302)
org.h2.engine.Engine.createSessionAndValidate(Engine.java:147)
org.h2.engine.Engine.createSession(Engine.java:122)
org.h2.engine.Engine.createSession(Engine.java:28)
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:313)
org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
org.h2.Driver.connect(Driver.java:73)
java.sql.DriverManager.getConnection(DriverManager.java:620)
java.sql.DriverManager.getConnection(DriverManager.java:200)
extension.Package.loadData(Package.java:477)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:616)
org.jboss.web.tomcat.service.TomcatInjectionContainer.processesLifecycleCallbackMetaData(TomcatInjectionContainer.java:560)
org.jboss.web.tomcat.service.TomcatInjectionContainer.postConstruct(TomcatInjectionContainer.java:333)
org.jboss.web.jsf.integration.injection.JBossDelegatingInjectionProvider.invokePostConstruct(JBossDelegatingInjectionProvider.java:90)
com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:219)
com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:101)
com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:405)
com.sun.faces.mgbean.BeanManager.create(BeanManager.java:265)
com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:191)
com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:73)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:71)
org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:67)
org.apache.el.parser.AstValue.getValue(AstValue.java:115)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187)
com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:106)
javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
javax.faces.component.UIOutput.getValue(UIOutput.java:164)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:351)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:160)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:308)
com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:181)
com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:125)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:269)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
任何关于我哪里出错的帮助将不胜感激。 谢谢。
【问题讨论】:
异常信息很清楚:Wrong user name or password
。用户名真的是-user
,密码真的是空字符串吗?
你真的有名为-user
的用户吗?
【参考方案1】:
我曾经遇到过完全相同的问题:我无法访问基于 H2 文件的数据库。我从不为 H2 数据库指定任何密码用户。 当我遇到连接问题“错误的用户名或密码”时,之前运行的应用程序中已经存在一个文件。 删除现有的 *.db 文件解决了这个问题(我猜它是使用生成的用户/密码对创建的,此后发生了变化)。
【讨论】:
【参考方案2】:你的用户名真的是“-user”吗,密码是空字符串吗?您正在使用参数调用方法DriverManager.getConnection(String url, String user, String password)
url = "jdbc:h2:~/test"
user = "-user"
password = ""
(空字符串)
如果您希望用户名和密码都是空字符串,您有两种选择:
DriverManager.getConnection("jdbc:h2:~/test", "", "");
DriverManager.getConnection("jdbc:h2:~/test");
【讨论】:
以上是关于h2Database 的默认详细信息的主要内容,如果未能解决你的问题,请参考以下文章
GetOrgChart:如何禁用单击转到详细信息视图的默认行为?