java – HSQL数据库用户缺少权限或对象未找到错误
作者:互联网
我试图使用hsqldb-2.3.4从Spring应用程序连接.
我使用以下详细信息创建了数据库
Type : HSQL Database Engine Standalone
Driver: org.hsqldb.jdbcDriver
URL: jdbc:hsqldb:file:mydb
UserName: SA
Password: SA
我在“MYDB”模式下创建了一个名为ALBUM的表
在spring配置文件中:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dbcpDataSource" />
</bean>
<bean id="dbcpDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:file:mydb" />
<property name="username" value="SA" />
<property name="password" value="SA" />
</bean>
在我的spring控制器中,我正在做jdbcTemplate.query(“SELECT * FROM MYDB.ALBUM”,新的AlbumRowMapper());
它给了我例外:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM MYDB.ALBUM]; nested exception is java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: ALBUM
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
如果我通过hsqldb的SQL编辑器执行相同的查询,它执行正常.你能帮我解决这个问题吗?
解决方法:
用户缺少权限或未找到的对象可能有多种原因,最明显的是您正在访问不存在的表.一个不太明显的原因是,当您运行代码时,与文件数据库URL的连接实际上可以创建数据库.您遇到的情况可能是您使用HSQL数据库管理器设置了数据库,添加了表和行,但这不是您的Java代码正在使用的特定实例.您可能想要检查您的工作区中是否没有这些文件的多个副本:mydb.log,mydb.lck,mydb.properties等.如果您的Java代码确实创建了这些文件,则位置取决于您运行程序的方式.例如,在Netbeans内部运行的Maven项目中,文件与pom.xml一起存储.
标签:spring-jdbc,java,spring,hsqldb 来源: https://codeday.me/bug/20190928/1828701.html