SQLite3 数据库或磁盘已满。

4

我正在使用Linux服务器。当我提交以下类似的查询时,

create table test1 as select id, sum(amount) from sales group by id;

我遇到了“数据库或磁盘已满”的错误。我已经联系了服务器管理员,他确定我的查询有足够的空间,并且可以毫无问题地生成此表。

然后我尝试了另一个查询。

create table test2 as select * from sales limit 100000000;

这次一切都很好。我的管理员认为这是权限问题引起的。但我想知道,如果是权限问题,我就根本无法生成test2表。你有什么想法吗?非常感谢!


有多少条记录?您将临时存储配置为内存还是磁盘?在哪里?您是否有那里的权限? - CL.
销售表中大约有20亿行。是的,管理员已经检查过了,我也有权限,并且还有足够的空间。之前我甚至运行过更大的查询也没有任何问题。这对我来说非常奇怪。 - user2371220
尝试给 sum(amount) 列取别名,例如 CREATE TABLE test1 AS SELECT id, SUM(amount) As SalesAmt FROM SALES GROUP BY ID; - Ken White
你能否在不使用“create table ... as”语句的情况下执行查询? - Tim
你使用的是32位还是64位的SQLite? - CL.
显示剩余5条评论
1个回答

3

确保您的临时目录不满或足够大:我刚刚遇到了这个问题,它是由于/tmp完全被垃圾填满所致。清空后就可以正常工作了。

具体地,在我的情况下:

select 1 from table group by x

是有效的,但是

select 1 from table group by x, y

却无法正常工作。

"Vacuum" 命令失败,错误提示 "SQL Error: Database or Disk is full"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接