Redshift VACUUM 不能 运行 在 SQLWorkbenchJ 上的事务块内

Redshift VACUUM cannot run inside a transaction block on SQLWorkbenchJ

我有一个:

VACUUM cannot run inside a transaction block

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

您不需要更改连接配置文件,您可以使用 set autocommit

在 SQL 脚本 "on-the-fly" 中更改自动提交 属性
set autocommit on;
vacuum;
set autocommit off;

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

对我来说这很有效。

END TRANSACTION;
VACCUM <TABLENAME>;

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

COMMIT;VACUUM;COMMIT;

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