在使用where编写select语句时,HSQLDB用户缺少权限或对象未找到错误

时间:2014-10-12 10:05:00

标签: sql database select hsqldb

我将SQuirrel SQL Client版本3.5.3和HSQLDB用于我的数据库。我已经能够为它指定相应的驱动程序(内存中)并创建一个别名。

我创建了一个表

CREATE TABLE ENTRY(
NAME VARCHAR(100) NOT NULL,
DESC VARCHAR(500) NOT NULL,
PRIMARY KEY (NAME))

并在其中添加了几行数据。虽然这些陈述有效:

select * from ENTRY
select NAME from ENTRY
select DESC from ENTRY

我总是Error: user lacks privilege or object not found" 在我的声明中添加where子句时,例如select DESC from ENTRY where NAME=CAR

任何帮助都非常感激,因为我可以慢慢感觉到我的理智正在减弱

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,但我的表名和其他内容都没问题,除了我对VARCHAR的查询都在双引号内("")但它应该是单引号(&# 39;')

示例
假设您有这样的表,其中flightId是主键enter image description here

现在这个查询错了:

SELECT * FROM flights WHERE flightId="0f3ae9b3-6bb1-4c95-9394-6179555f5879"

虽然这个没问题:

SELECT * FROM flights WHERE flightId='0f3ae9b3-6bb1-4c95-9394-6179555f5879'

答案 1 :(得分:1)

我终于能够自己解决这个问题了。我为select语句使用了一个错误的表名,并在将其更改为真正有效的语句之后。唯一令我困惑的是我也为插入语句使用了错误的表名,但它们已成功执行,所有数据都显示在其中。

答案 2 :(得分:1)

HSQLDB具有名为PUBLIC的默认架构。所有SQL查询都将指向PUBLIC;如果您已创建自己的架构,例如: OWNSCHEMA ,则编辑xxx.script并更改以下行

SET DATABASE DEFAULT INITIAL SCHEMA PUBLIC

SET DATABASE DEFAULT INITIAL SCHEMA OWNSCHEMA

答案 3 :(得分:0)

当我收到相同的异常时,根本原因是我在SELECT子句中有一个FROM子句中没有的表。

答案 4 :(得分:0)

您的问题是:

<块引用>

我总是收到错误:用户缺少权限或找不到对象”时 在我的语句中添加一个 where 子句,例如从条目中选择 DESC 其中 NAME=CAR

是的,你当然知道。 NAME 是 ENTRY 表的一个字段。汽车不是任何领域。 也许你的 WHERE 子句应该看起来像这样:

WHERE NAME='CAR'

从而将字段值与文字字符串值进行比较,而不是尝试将其与不存在的其他字段值进行比较。