Я использую образ докера MongoDB mongo:4.4
и отлично работаю с DBeaverEE (MongoDB) и Robo 3T.
Я пытаюсь подключиться к MongoDB с помощью JDBC, используя jaydebeapi.connect(...)
, а также поместил все связанные банки (например, mongodb-jdbc-2.1.4.jar
и mongodb-driver-sync-4.7.1.jar
).
Мой код:
Я добавил {username}:{password}
в строку, так как без него у меня выдавалась ошибка с нулевым именем пользователя.
driver_name = "com.mongodb.jdbc.MongoDriver"
jdbc_url = f"jdbc:mongodb://{username}:{password}@{host}:{port}/{database}?authSource=admin&authMechanism=SCRAM-SHA-1"
jar_folder = "jars_test"
jar_folder = os.path.abspath(jar_folder)
jar_files = [os.path.join(jar_folder, file) for file in os.listdir(jar_folder) if file.endswith(".jar")]
# Start the JVM with the JDBC driver JAR files
if not jpype.isJVMStarted():
# Start the JVM with the JDBC driver JAR files
jpype.startJVM(
jpype.getDefaultJVMPath(),
"-Djava.class.path = {}".format(os.pathsep.join(jar_files))
)
try:
# Connect to MongoDB using JayDeBeApi
conn = jaydebeapi.connect(
driver_name,
jdbc_url,
[username, password],
)
print("Connection successful and query executed.")
conn.close()
except Exception as e:
print(f"Error: {e}")
raise e
И я получил эту ошибку:
com.mongodb.MongoCommandException: com.mongodb.MongoCommandException: Command failed with error 59 (CommandNotFound): 'no such command: 'sqlGetResultSchema'' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "no such command: 'sqlGetResultSchema'", "code": 59, "codeName": "CommandNotFound"}
Я не нашел решения этой проблемы, и предполагается, что Mongo DB не поддерживает эту команду.
Любые предложения и возможные решения для подключения MongoDB с использованием JDBC?
Похоже, вы используете драйвер Atlas JDBC. Сегодня я столкнулся с той же проблемой конкретно с этим драйвером.
На данный момент попробуйте использовать другой драйвер JDBC, например https://github.com/wise-coders/mongodb-jdbc-driver - у меня сработало.