我有一个在CloudSQL数据库上执行数据库迁移的Kubernetes JOB。
从GKE访问CloudSQL数据库的一种方法是使用CloudSQL-proxy容器,然后通过localhost连接。很好-到目前为止,这是有效的。但是,因为我是在K8s JOB中执行此操作,所以作业不会被标记为成功完成,因为代理仍在运行。
$ kubectrl get po
NAME READY STATUS RESTARTS AGE
db-migrations-c1a547 1/2 Completed 0
从Google作业连接到CloudSql时
public String cnstr = "jdbc:google:mysql://xxx:zzz:yyy/dbname?user=root&password=****";
Connection conn = DriverManager.getConnection(cnstr);
PreparedStatement st = conn.prepareStatement(selectSql))
我发现了一个错误:
No suitable driver found for jdbc:goo
我正在设置一个服务帐户,以便从GKE访问CloudSQL DB。我创建了GSA和KSA,并执行了将两者关联起来的命令(gcloud iam service-accounts add-iam-policy-binding...)。如何检查绑定以确保调用成功?我本以为会有一个像gcloud iam service-accounts list-iam-policy-binding ...这样的命令来显示状态。
我觉得cloudSQL很有趣,当我将我的网站部署到生产环境中时,我总是得到这个错误“没有选择数据库”。
我上传到cloudsql的转储文件中有一行"USE mydb“,我必须在我的数据库中调用"use mydb”,以便每个查询都能正常工作。
有人知道为什么吗?或者如何修复它
java.sql.SQLException: No database selected
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkError