0

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

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 语句时,它显示一个空表。到现在为止还挺好。

但是,如果我断开连接然后重新连接到集群,然后再次运行完全相同的 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

所以看起来表创建不持久或保持当前连接......这里的修复是什么?!?

4

1 回答 1

4

在 SQL Workbench 中,创建新连接配置文件时自动提交的默认设置是“关闭”。因此,当您创建一个新连接并且不更改任何内容时,自动提交将被禁用,您需要处理commit每个事务。

或者,可以通过执行以下操作以交互方式关闭/打开自动提交:

SET autocommit ON/OFF

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

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;
于 2018-05-29T15:24:26.973 回答