RDSdataService execute_statement 返回 (BadRequestException)

问题描述

我正在使用带有 executeStatement 的 boto3 库来使用 DATA API 从 RDS 集群获取数据。 如果我选择 1 或 2 列,查询工作正常,但一旦我选择另一列进行查询,它就会返回错误 (BadRequestException) permission denied for relation table_name

我已经使用 pgadmin 检查了权限是否完整,可以查询我正在使用的用户的整个数据库

调用中包含的函数

def execute_query(self,sql_query,sql_parameters=[]):
        """
        aurora DataAPI execute query. Generally used for select statements.
        :param sql_query: Query
        :param sql_parameters: parameters in sql query
        :return: DataApi response
        """
        client = self.api_access()
        response = client.execute_statement(
            resourceArn=RESOURCE_ARN,secretArn=SECRET_ARN,database='db_name',sql=sql_query,includeResultMetadata=True,parameters=sql_parameters)
        return response

函数调用:没有错误

    query = '''
        SELECT id
        FROM schema_name.table_name
        limit 1

    ''' 
    print(query)
    result = conn.execute_query(query)
    print(result)

函数调用:因上述错误而失败

    query = '''
        SELECT id,name,event
        FROM schema_name.table_name
        limit 1

    ''' 
    print(query)
    result = conn.execute_query(query)
    print(result)

使用 Boto3 从 DATA API 获取内容是否有横向限制?我知道有 1MB 的限制,但如果超过限制,它应该根据文档返回一些内容

后端是 Postgres RDS

更新: 我可以选择相同的列 10 次,这不是问题

    query = '''
        SELECT id,event,event
        FROM schema_name.table_name
        limit 1

    ''' 
    print(query)
    result = conn.execute_query(query)
    print(result)

所以这意味着有些列我无法选择。

解决方法

我不知道某些表中有列级安全性。如果您使用的用户在 postgres 中有列级证券,那很明显我无法选择这些列。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...