Redshift table 创建的不是 durable/persistent

Redshift table creates are not durable/persistent

我正在使用 SqlWorkbenchJ 连接到我的 Redshift 集群并创建 table:

CREATE TABLE mydb_dev.Widget (
  fizz BIGINT,
  buzz BIGINT,
  lastRanOn timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);  

select * from mydb_dev.Widget;

当我运行上面的SELECT语句时,它显示一个空的table。到目前为止一切顺利。

但是,如果我断开连接然后重新连接到集群,然后 运行 再次完全相同 SELECT,我得到:

An error occurred when executing the SQL command:
select * from mydb_dev.Widget

[Amazon](500310) Invalid operation: relation "mydb_dev.Widget" does not exist;
1 statement failed.

Execution time: 0.06s

因此看起来 table 创建的内容不持久或不持久存在当前连接...这里的修复是什么?!?

在 SQL Workbench 中,创建新 connection profile 时自动提交的默认设置是 "off"。因此,当您创建一个新连接并且不进行任何更改时,自动提交将被禁用并且您需要 commit 每个事务。

或者,可以通过执行 off/on 交互式地打开自动提交:

SET autocommit ON/OFF

创建table后需要提交,否则,当当前会话结束时,创建的table将被删除。

创建table后执行COMMIT

CREATE TABLE mydb_dev.Widget (
  fizz BIGINT,
  buzz BIGINT,
  lastRanOn timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);  
COMMIT;