use*_*678 3 google-cloud-platform google-cloud-spanner
当我尝试使用 Google Cloud Spanner 开源 JDBC 驱动程序进行连接时,收到以下错误消息:
应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,则它们可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。有关更多信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials
URI:jdbc:cloudspanner:localhost:9010 /项目/我的项目/实例/我的实例/数据库/我的数据库
我认为模拟器不需要任何凭据即可在本地工作。有办法解决这个错误吗?谢谢。
您是正确的,模拟器不需要任何凭据。您收到此错误的原因是 JDBC 驱动程序不知道您正在尝试连接到模拟器。相反,它认为您正在尝试连接到 localhost:9010 处的某个服务器,该服务器可能是官方模拟器或任何其他模拟器或模拟服务器。
连接模拟器有两种方式:
SPANNER_EMULATOR_HOST为模拟器的地址。在这种情况下,那就是localhost:9010。设置此环境变量后,JDBC 驱动程序知道您正在尝试连接到模拟器,并将确保不需要或使用任何凭据。localhost:9010设置环境变量时,可以省略 JDBC 连接 URL 中的这一部分SPANNER_EMULATOR_HOST。usePlainText=true在连接 URL 中。这将告诉 JDBC 驱动程序创建纯文本连接(即无 SSL)并且不要使用任何凭据。以下是如何通过在 URL 中指定主机名连接到模拟器的有效示例:
try (Connection connection = DriverManager.getConnection(
"jdbc:cloudspanner://localhost:9010/projects/test-project/instances/test-instance/databases/test-db;usePlainText=true")) {
try (ResultSet rs = connection.createStatement().executeQuery("SELECT 1")) {
while (rs.next()) {
System.out.printf("%d%n", rs.getLong(1));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |