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;
我正在使用 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;