当前位置: 首页 > 知识库问答 >
问题:

HSQL数据库用户缺乏权限或未找到对象错误

苏华藏
2023-03-14

我试图使用HSQLDB-2.3.4从Spring应用程序进行连接。

我使用以下细节创建了数据库

Type : HSQL Database Engine Standalone
Driver: org.hsqldb.jdbcDriver
URL: jdbc:hsqldb:file:mydb
UserName: SA
Password: SA
<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>
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编辑器执行相同的查询,它执行得很好。你能帮我做这个吗。

共有1个答案

邢起运
2023-03-14

用户缺乏权限或找不到对象可能有多种原因,最明显的原因是您正在访问一个不存在的表。一个不太明显的原因是,当您运行代码时,到文件数据库URL的连接实际上可以创建一个DB。您正在经历的场景可能是使用HSQL数据库管理器设置了一个DB,添加了表和行,但Java代码使用的不是这个特定的实例。您可能希望检查您的工作区中是否没有这些文件的多个副本:mydb.logmydb.lckmydb.properties等。如果Java代码确实创建了这些文件,则位置取决于如何运行程序。例如,在Netbeans内部运行的Maven项目中,文件存储在pom.xml旁边。

 类似资料:
  • 我的程序是一个会计管理器,我有一个HSQLDB。这是主类,我目前正在对程序进行测试,所以在主函数中是我输入测试代码以将值插入数据库的地方。这是应用程序类。 我已经多次检查该表是否存在。我使用IntelliJ idea,它有一个数据库管理器,当我直接在数据库中运行相同的SQL时,它运行得很好,所以我知道问题不在于SQL代码。

  • 我试图使用SQL从java代码编写一个查询,以查找两个日期列之间的年份差异。我有一个表,其中包含列和,我想计算这两列之间的年数。 我的java代码块: 每当我试图运行代码时,我都会得到错误 我想要的是获得列和之间的年数。

  • 我正在看一些旧代码,在运行一个单元测试时遇到了问题。 代码为: 但是,当试图准备语句时,它会抛出错误 用户缺少权限或找不到对象:CUSTOMERS_SEQ。下一个瓦尔。 我正在阅读错误本身,似乎找不到任何东西。奇怪的是,当我在本地运行查询选择CUSTOMERS_SEQ.NEXTVAL时,它工作正常。 任何和所有的帮助将不胜感激。

  • 问题内容: 我正在尝试使用hsqldb-2.3.4从Spring应用程序连接。 我使用以下详细信息创建了数据库 我在“ MYDB”模式下创建了一个名为ALBUM的表 在spring配置文件中: 在我的spring控制器中 jdbcTemplate.query(“SELECT * FROM MYDB.ALBUM”, new AlbumRowMapper()); 而且它给了我例外: 如果我通过hsql