【发布时间】:2021-06-14 20:46:07
【问题描述】:
我正在尝试使用 GAS 和 JDBC 连接到 Google Cloud MySQL 5.7 实例。我可以正常运行以下命令:
var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my-instance-111111:us-central1:mydbname", user,userPwd)
但这并没有连接到特定的数据库,即当我运行时
var stmt = conn.createStatement();
var results = stmt.executeQuery('SELECT col FROM myTable;');
我收到Error Exception: No database selected。
尝试修复的一种方法:
GAS docs 表示我可以使用高级参数来包含数据库名称,但是当我运行var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my-instance-111111:us-central1:mydbname", user,userPwd,mydbname) 时,
我收到Exception: The parameters (String,String,String,String) don't match the method signature for Jdbc.getCloudSqlConnection。
我根据许多 StackOverflow 帖子尝试过的 getCloudSqlConnection 语句集合:
var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my-instance-111111:us-central1:mydbname/mydbname", user,userPwd)
var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my-instance-111111:us-central1:mydbname:3306/mydbname", user,userPwd)
var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my-instance-111111:us-central1:mydbname:3307/mydbname", user,userPwd)
对于上述陈述,我还尝试将my-instance-111111:us-central1:mydbname 替换为 GC 概述网页上提供的公共 IP。全部返回Exception: Failed to establish a database connection. Check connection string, username and password.
我正在使用用户 root 和适当的密码。我可以通过命令行使用我在 GAS 中提供的用户和密码进入数据库,所以我不认为我提供了错误的用户和密码。
编辑: 我回到了@AddonDepot 提到的文档,并意识到我需要传递一个对象,但我仍然无法完成这项工作......
var obj = {
connectTimeoutSeconds: 15,
database: "mydbname",
instance: "my-instance-111111:us-central1:mydbname",
password: userPwd,
queryTimeoutSeconds: 15,
user: user };
var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my-instance-111111:us-central1:mydbname", obj);
返回
Exception: The following connection properties are unsupported: database,instance,connectTimeoutSeconds,queryTimeoutSeconds. .
我在创建对象时做错了吗?我猜不是,因为 GAS 可以识别 user 和 password。为什么不能识别其他高级参数?
【问题讨论】:
-
getCloudSqlConnection()函数有 3 个变体,具有不同的方法签名(即,通过传递给函数的参数的数量和类型来区分)。再次阅读文档以阐明用法。 -
您可以使用其他方法进行远程连接吗?
-
@Martí 是的,我可以从本地计算机上的终端完全访问数据库。为此,我使用了与 GAS 脚本中完全相同的用户名和密码。
标签: mysql google-apps-script jdbc google-cloud-platform