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