【发布时间】:2018-11-12 09:09:25
【问题描述】:
我正在开发一个简单的 JAVA 时间触发 Azure 函数。
我正在尝试连接到 Azure MySQL 实例,但我不断收到此错误:
[Information] com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
这里是源代码:
String url="jdbc:mysql://XXXX.mysql.database.azure.com:3306/DBNAME?useSSL=true&requireSSL=false";
connect = DriverManager.getConnection(url, "user@DBNAME", "passwd");
statement = connect.createStatement();
resultSet statement.executeQuery("select * from table1");
我正在使用以下库:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
注意事项:
该程序在我的本地机器上运行良好(即,将我的 IP 地址添加到 MySQL 防火墙后,我可以从我的机器访问数据库);
我已经尝试过不同的 mysql 库:没有任何变化;
另一个用 NodeJS 实现的 Azure 函数能够访问数据库;
我尝试将“附加出站 IP 地址”功能添加到 MySQL 防火墙:没有任何变化。
有什么想法吗?
提前谢谢你。
【问题讨论】:
-
您是否尝试过同一连接器包的不同版本?看起来它与 azure mysql stackoverflow.com/questions/44620692/… stackoverflow.com/questions/53095542/… 有此类连接问题的历史
-
谢谢。我已经尝试过不同的软件包版本,但错误仍然存在。关键是相同的 JAVA 代码在我的本地机器上运行良好(即,我可以连接到远程 Azure DB)。这似乎与特定的 Azure/网络配置有关。
-
更新:我开发了一个简单的 C# Azure 函数,效果很好。这似乎是一个与基于 JAVA 的 Azure Function env 严格相关的问题。
-
你找到解决这个问题的方法了吗?
-
我联系了 MS 支持,但不幸的是他们没有提供任何解决方案。他们告诉我 JAVA 仍处于预览阶段,所以他们关闭了票。这个问题很奇怪。我尝试了许多不同的配置/jdbc 库,但没有任何改变。奇怪的是,当我在本地机器上运行相同的代码时,我可以访问 Azure MySQL DB。
标签: java azure azure-functions azure-mysql-database