3

我使用 Navicat 和这个命令在 sqlite 中创建临时表:

create temp table search as select * from documents

然后当我尝试查询时:

select * from search

我有:

no such table: temp.sqlite_master

或者:

no such table

该表也没有出现在表列表中,但是当我尝试再次创建它时,我得到:

table search already exists

问题是什么?是navicat的吗?

4

3 回答 3

2

您创建的声明对我来说看起来是正确的。创建临时表时,当您关闭用于创建表的连接字符串时,它会被删除。您是否在创建表后关闭连接,然后在发送查询时再次打开它?

如果没有,您也可以包含您的查询语句吗?

于 2012-12-15T17:16:54.910 回答
1

这就像 Navicat 附带的 SQLite DLL 中的错误。在其他地方测试它工作正常。

于 2012-12-18T16:49:21.263 回答
0

SQLite 的文档说明了有关 CREATE TABLE 的信息:

如果指定了 a,则它必须是“main”、“temp”或附加数据库的名称。在这种情况下,新表是在命名数据库中创建的。如果“CREATE”和“TABLE”之间出现“TEMP”或“TEMPORARY”关键字,则在临时数据库中创建新表。同时指定 a 和 TEMP 或 TEMPORARY 关键字是错误的,除非是“temp”。如果未指定数据库名称且 TEMP 关键字不存在,则在主数据库中创建表。

可能您应该像这样通过临时前缀访问表:temp.search.

于 2014-04-13T11:51:13.230 回答