14

我有一个:

VACUUM 不能在事务块内运行

Redshift 中的 SQLWorkbenchJ 出错,但在此之前我已经提交了所有事务。

4

3 回答 3

18

您不需要更改连接配置文件,您可以使用set autocommit “即时”更改 SQL 脚本中的 autocommit 属性

set autocommit on;
vacuum;
set autocommit off;

您还可以通过菜单“SQL -> Autocommit”切换当前的自动提交状态

于 2015-11-30T08:45:02.770 回答
11

对我来说,这很有效。

END TRANSACTION;
VACCUM <TABLENAME>;
于 2017-07-31T18:20:15.667 回答
7

打开和关闭自动提交似乎是一个 hacky 解决方案,特别是如果您有一个带有提交和真空的长脚本(即许多非常大的临时表)。相反,尝试(在一行中)。此外,许多人报告 redshift 不喜欢这种语法。反而,

COMMIT;VACUUM;COMMIT;

问题在于,vacuum 不仅希望成为事务块中的第一个命令,还希望该块在之后显式提交。

于 2017-09-19T20:45:51.593 回答