我使用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?
答案 0 :(得分:2)
你创建语句对我来说是正确的。创建临时表时,在关闭用于创建表的连接字符串时会删除它。您在创建表后关闭连接,然后在发送查询时再次打开它吗?
如果没有,您是否也可以包含查询语句?
答案 1 :(得分:1)
这就像Navicat附带的SQLite DLL中的一个错误。测试它在其他地方工作正常。
答案 2 :(得分:0)
SQLite的文档告诉我们有关CREATE TABLE的信息:
如果指定了a,则必须是“main”,“temp”, 或附加数据库的名称。在这种情况下,新表是 在指定的数据库中创建。如果是“TEMP”或“TEMPORARY”关键字 在“CREATE”和“TABLE”之间发生,然后创建新表 在临时数据库中。指定两者都是错误的 和TEMP或TEMPORARY关键字,除非是 “温度”。如果未指定数据库名称,则不指定TEMP关键字 然后,表将在主数据库中创建。
可能您应该通过临时前缀访问表格,如下所示:temp.search
。