Поскольку Redshift говорит, что таблица не существует, это указывает на то, что CREATE TABLE
не фиксируется в базе данных, когда вы используете ее как учетную запись суперпользователя. Если вы отключитесь от имени учетной записи суперпользователя, а затем снова подключитесь и попытаетесь выполнить оператор SELECT
для таблицы, вы получите ту же ошибку?
Попробуйте выполнить явный оператор COMMIT
после создания таблицы, и затем попытайтесь сделать запрос, используя учетную запись не суперпользователя. Если используемый вами клиент переносит все запросы в блок транзакции, возможно, они не были зафиксированы до того, как вы подключились к учетной записи не суперпользователя.
Также для справки я выполнил в следующих запросах с включенной автоматической фиксацией не удалось воспроизвести описанную проблему:
-- Run as superuser account:
CREATE SCHEMA users;
CREATE TABLE users.addresses (
user_id VARCHAR(8) ,
user_address VARCHAR(512)
);
INSERT INTO users.addresses VALUES ('12345678', 'Address 1');
CREATE USER john WITH PASSWORD '********';
CREATE GROUP developers;
GRANT USAGE ON SCHEMA users TO GROUP developers;
ALTER GROUP developers ADD USER john;
GRANT ALL ON users.addresses TO GROUP developers;
ALTER TABLE users.addresses OWNER TO john;
-- Run as non-superuser account 'john':
SELECT *
FROM users.addresses;
-- Result Set:
-- user_id user_address
-- 12345678 Address 1