在 Django 应用程序中对远程 Oracle 数据库执行查询时出现 ORA-02019 错误

问题描述 投票:0回答:1

我目前正在开发一个与 Oracle 数据库交互的 Django 应用程序。我的应用程序需要在远程 Oracle 数据库上执行 SQL 查询,该数据库在 settings.py 文件中配置。

我尝试执行的 SQL 查询的语法类似于:

SELECT * FROM table@source

此处,源是与当前执行查询的数据库不同的数据库。源数据库和目标数据库都是Oracle数据库。

尽管在settings.py中配置了远程数据库,但在执行第一个查询时遇到以下错误:

ORA-02019: connection description for remote database not found

我正在寻找有关如何解决此错误的指导。以下是一些可能有用的附加信息:

我已经确认可以在 Django 环境之外访问远程数据库。 settings.py 中使用的用户凭据具有必要的权限。 该应用程序可以很好地处理本地数据库查询。 有没有人遇到过类似的问题或者可以提供有关可能出现问题的见解?任何有关配置 Django 以使用数据库链接与远程 Oracle 数据库无缝协作的建议将不胜感激。

提前感谢您的帮助!

django oracle cx-oracle django-settings python-oracledb
1个回答
0
投票
SELECT * FROM table@source

@source
意味着您的客户端(本地计算机上的 python/django)与一个数据库(在本例中可能是
target
数据库)进行对话,然后
target
数据库打开到
source
的数据库链接
table
表所在数据库进行查询,然后将结果集发送回
target
数据库,然后返回客户端。

当您使用数据库链接时,您不是直接连接到

source
数据库,因此
settings.py
中指定的任何内容都是无关紧要的。

要么:

  • 不要使用数据库链接并使用:

    SELECT * FROM table
    

    并告诉 Django 使用到

    source
    中指定的
    settings.py
    数据库的连接;或

  • 仅在

    target
    中指定
    settings.py
    数据库,并在 target
    创建到 
    source
     的数据库链接
    。比如:

    CREATE PUBLIC DATABASE LINK source USING 'insert_connection_string';
    

    (阅读上面的文档链接并根据需要进行调整。)

    然后您可以连接到

    target
    并使用:

    SELECT * FROM table@source
    
© www.soinside.com 2019 - 2024. All rights reserved.