我有一个:
VACUUM 不能在事务块内运行
Redshift 中的 SQLWorkbenchJ 出错,但在此之前我已经提交了所有事务。
您不需要更改连接配置文件,您可以使用set autocommit “即时”更改 SQL 脚本中的 autocommit 属性
set autocommit on;
vacuum;
set autocommit off;
您还可以通过菜单“SQL -> Autocommit”切换当前的自动提交状态
对我来说,这很有效。
END TRANSACTION;
VACCUM <TABLENAME>;
打开和关闭自动提交似乎是一个 hacky 解决方案,特别是如果您有一个带有提交和真空的长脚本(即许多非常大的临时表)。相反,尝试(在一行中)。此外,许多人报告 redshift 不喜欢这种语法。反而,
COMMIT;VACUUM;COMMIT;
问题在于,vacuum 不仅希望成为事务块中的第一个命令,还希望该块在之后显式提交。