Ошибка при попытке открыть соединение JDBC с Google Cloud Spanner

Я пытаюсь открыть JDBC-соединение с базой данных Google Cloud Spanner, но получаю следующее сообщение об ошибке:

java.lang.IllegalArgumentException: для этой службы требуется идентификатор проекта, но он не может быть определен с помощью построителя или среды. Установите идентификатор проекта с помощью конструктора.

Мой URL-адрес JDBC выглядит следующим образом:

jdbc:cloudspanner://localhost;Project=project-id;Instance=instance-id;Database=database-name;PvtKeyPath=path-to-key-file

Если я удалю свойство Project из URL-адреса, я получу следующее исключение:

java.sql.SQLNonTransientConnectionException: [Simba] Соединение JDBC отклонено: [Simba] Требуемые ключи соединения JDBC: Проект; [Simba] Дополнительные ключи подключения JDBC: язык, режим

Получается, что драйвер забирает мой идентификатор проекта, но почему-то не принимает его. Я проверил и дважды проверил, что мой идентификатор проекта совпадает с идентификатором проекта, который я создал в Google, я также пытался изменить значение имени проекта вместо идентификатора проекта, но безрезультатно.

У кого-нибудь есть пример URL-адреса, который работает?

РЕДАКТИРОВАТЬ: похоже, это связано со ссылкой на файл закрытого ключа. Если я сделаю переменную среды GOOGLE_APPLICATION_CREDENTIALS, указывающую на мой файл закрытого ключа, соединение можно будет успешно установить. Если я удалю эту переменную среды, я получу вышеуказанное исключение.


person Knut Olav Løite    schedule 24.02.2017    source источник
comment
Связано: stackoverflow.com/questions/42287427/   -  person Mark Rotteveel    schedule 24.02.2017
comment
У меня такая же проблема. Похоже, что этот параметр не работает в текущей версии 1.0.4.   -  person abhillman    schedule 07.03.2017
comment
Эта проблема не была исправлена ​​в версии 1.0.6 драйвера jdbc. Пожалуйста, попробуйте это.   -  person Vikas Kedia    schedule 28.03.2017


Ответы (2)


Какую версию драйвера вы используете? В последней версии, если вы указываете путь к файлу учетных данных в URL-адресе, вам не нужно устанавливать GOOGLE_APPLICATION_CREDENTIALS.

person Vikas Kedia    schedule 06.03.2017
comment
Я использую версию 1.0.4.1005 драйвера JDBC (версия Java 8, JDBC 4.2) и версию 0.9.3-beta клиентской библиотеки Google Cloud Spanner. - person Knut Olav Løite; 06.03.2017
comment
Эта проблема исправлена ​​в версии 1.0.6.1007. Пожалуйста, попробуйте это. - person Vikas Kedia; 28.03.2017

Поскольку драйвер JDBC, поставляемый Google, сильно ограничен (не поддерживает состояния DML и DDL), я написал свой собственный драйвер JDBC. Драйвер предназначен для работы с приложениями с поддержкой JPA / Hibernate. Драйвер можно найти здесь: https://github.com/olavloite/spanner-jdbc

Этот драйвер поддерживает URL-адреса того же типа, что и драйвер, предоставленный Google, включая свойство PvtKeyPath.

person Knut Olav Løite    schedule 07.03.2017