首页 > 解决方案 > 在执行 aws python lambda linux 时尝试检索错误 ORA-01804 的文本时出错

问题描述

我正在尝试从 aws lambda 执行以下 lambda 函数,我使用 python 3.7 作为运行时环境。

import cx_Oracle
import os
import logging
import boto3
from botocore.exceptions import ClientError
from base64 import b64decode


logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):

    logger.info('begin lambda_handler')
    os.environ['LD_LIBRARY_PATH'] = os.getcwd()
    dsn = cx_Oracle.makedsn("hostname", 1521, service_name="servicename")
    con = cx_Oracle.connect("userid", "passwod", dsn)
    cur = con.cursor()

    #logger.info('username: ' + username)
    #logger.info('host: ' + host)

    sql = """SELECT COUNT(*) AS TEST_COUNT FROM DUAL"""

    cur.execute(sql)
    columns = [i[0] for i in cur.description]
    rows = [dict(zip(columns, row)) for row in cur]
    logger.info(rows)

    con.close()
    logger.info('end lambda_handler')
    return "Successfully connected to oracle."

但是当我在 lambda 以上执行时,我得到以下错误。尝试检索错误 ORA-01804 的文本时出错

对此有什么帮助吗?

标签: python-3.xlinuxaws-lambda

解决方案


检查您的 Oracle 即时版本是否与您的数据库相同。这也可能导致此错误。我尝试使用最新的 oracle 即时客户端 v21.1,它会发出与此相同的错误。事实证明,托管数据库的服务器使用的是 v11.2,所以我不得不下载 v11.2 来匹配它。


推荐阅读