来自 Oracle DB 的连接错误 - Logstash

问题描述

有没有人在从 Logstash JDBC Input Plugin 连接到 Oracle DB 时遇到过这个问题:

class Salary:
    """An employee receives one salary for each job he has."""

    def __init__(self,value,job,employee):
        self.value = value
        self.job = job
        self.employee = employee

    def __repr__(self):
        return f"{self.employee} works as {self.job} and earns {self.value}"

    def __eq__(self,other):
        """A salary is equal to another if value is equal."""
        return self.value == other.value

    def __hash__(self):
        """A salary can be identified with the couple employee-job."""
        return hash(self.employee) + hash(self.job)

alice = 'Alice'
bob = 'Bob'
engineer = 'engineer'
teacher = 'teacher'

alice_engineer = Salary(10,engineer,alice)
alice_teacher = Salary(8,teacher,alice)
bob_engineer = Salary(10,bob)

print(alice_engineer == alice_teacher)
print(alice_engineer == bob_engineer,'\n')

print(alice_engineer is alice_engineer)
print(alice_engineer is alice_teacher)
print(alice_engineer is bob_engineer,'\n')

alice_jobs = set([alice_engineer,alice_teacher])
print(alice_jobs)
print(bob_engineer in alice_jobs)  # IMPORTANT
print(bob_engineer in list(alice_jobs))  # IMPORTANT

我能够通过 sql 开发人员使用相同的凭据和连接详细信息进行连接。

这是我的 Logstash JDBC 输入:

False
True 

True
False
False 

{Alice works as teacher and earns 8,Alice works as engineer and earns 10}
False
True

我的 Oracle 版本是 19.3 和 Logstash-7.9.1 (windows)

解决方法

我看到您正在使用 oracle jdbc 驱动程序 21.1 版本中的 ojdbc8.jar。尝试一个简单的独立 java 测试来连接您的数据库,看看您是否遇到相同的错误。如果问题重现,则粘贴完整的错误堆栈跟踪。 SQLDeveloper 可能使用了不同版本的 ojdbc jar。