- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到了很多关于这个问题的答案,今天我正在尝试解决我的问题。 (我已经花了 2 天多的时间,但仍然一无所知)。
这是我的情况:
它在我的 Mac 10.13.1 上
MySQL 在一个 docker 容器中运行,我设置了所有这些权限。
docker exec -it mysql bash
==> cd/etc
=> 我找到了一个 my.cnf
文件,我在其中添加了 bind-address=127.0.0.1
我有一个本地 MySQL Workbench,它能够连接到此 MySQL 服务器 127.0.0.1:3306
并从数据库中获取结果。
但是,当我的应用程序在第二个 Docker 容器中启动时,我无法使其连接到位于不同容器上的 MySQL 数据库。这是我在应用程序启动期间使用的命令的一部分:
docker run -d ... -e DB_URL=jdbc:mysql://127.0.0.1:3306/mydatabase --name myApp --restart=always --link mysql myApp_t:latest
但是一旦 myApp 启动,我可以从它的日志中找到消息:
com.mysql.jdbc.exceptions.jdbc4.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.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_111]
...
任何线索我可能还在做什么?
最佳答案
与 MySQL/JDBC 连接相比,这更像是一个 docker 问题。你的第二个 docker 容器无法到达你的第一个,因为那里的 127.0.0.1 指向容器本身,而不是第一个容器。
首先,您不应该将第一个容器中的bind_address
配置为127.0.0.1
。您需要将其保留或将其设置为 0.0.0.0
。您可能没有重新启动 MySQL,否则您也无法从自己机器上的 MySQL Workbench 进行连接。
通过 127.0.0.1
从您的机器连接到在 docker 中运行的应用程序的能力仅在您的机器上可用,在容器之间不可用。
您的命令行显示您已将 myApp
容器链接到 mysql
容器(使用 --link mysql
)。这意味着您应该使用以下连接 URL:
jdbc:mysql://mysql:3306/mydatabase
即:将 127.0.0.1
替换为 mysql
,因为它用作 mysql 容器的主机名以在这两个容器之间进行通信。
关于mysql - "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50301361/
在 CruiseControl 版本 1.6.7981.1 中,我从事件查看器中收到以下错误,导致 ccservice 停止。到目前为止,我的解决方法是登录构建框并手动启动 ccservice。看起来
日志消息全文: 日志消息:获取新用户时发生错误 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是在 4
我们正在编写一个用于经济计算的软件。我们使用 Java 6、Swing 应用程序框架、MySQL 5.1、JDBC 和 Hibernate(JDBC 仅用于初始连接测试)。我们将该应用程序部署在 Wi
我通过 App Engine Java Rest API 项目连接到 Google Cloud SQL,以在云上检索和存储数据。我可以通过本地主机成功与服务器通信,但在发布后,我收到此错误: Tryi
我正在使用 Eclipse 和 Android 模拟器。我可以在模拟器浏览器中访问10.0.2.2。但在我的应用程序中,此代码未运行: Connection con = DriverManager.g
我的 MySQL 连接池有点问题。是这样的: 通过 Quartz 安排不同的作业。所有作业都连接到不同的数据库,这些数据库全天工作正常,而夜间计划的作业因 CommunicationsExceptio
我正在运行一个使用 Hibernate 和 C3P0 作为连接池、MySQL 5.6 数据库的 Java Web 应用程序。我继续在已部署的应用程序中遇到连接超时和生成错误的问题: Caused by
这个问题在这里已经有了答案: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
有人在执行某些查询时遇到过这样的错误吗? (jdbc4.CommunicationsException:通信链接失败) 一般来说,这个异常是应用程序和mysql之间的通信出现了一些问题。你可以找到很多
我的 jhipster 后端应用程序使用 mysql 和 elasticsearch,我使用“./mvnw package -Pprod dockerfile:build -DskipTests”成功
我有一个谷歌应用引擎连接的项目,我试图连接到谷歌云 sql 数据库。我将我的项目上传到谷歌,并通过它尝试连接到数据库。 我的连接网址如下-> Class.forName("com.mysql.jdbc
我有两个网络服务。一个 Web 服务调用另一个 Web 服务。这些 Web 服务托管在两个不同的 AWS 实例上。如果被调用的 Web 服务空闲一段时间,我会收到此异常 - com.mysql.jdb
我正在尝试从 GAE(Google App Engine)内部连接到我的 MySQL 数据库实例,也在 GAE 上。从外面看效果很好。 经过一周的搜索,我似乎找不到问题。 没有 MySQL 连接代码,
/** * */ package ORM; import java.sql.Connection; import java.sql.DriverManager; import java.sql.S
我们正在使用 Spring + Hibernate + MySql 运行一个 J2EE 应用程序,它在内部使用 C3P0 和 Connector/J 用于连接池。但我们收到通信链接失败错误以下是配置
我正在努力使数据库与Java程序进行通讯。 有人可以使用JDBC给我一个快速而肮脏的示例程序吗? 我收到一个相当惊人的错误: Exception in thread "main" com.mysql.
我正在努力让数据库与Java程序进行通讯。 有人可以使用JDBC给我一个快速而肮脏的示例程序吗? 我收到一个相当惊人的错误: Exception in thread "main" com.mysql.
我在保持事件检查期间遇到 异常,这意味着连接 (com.mysql.jdbc.JDBC4Connection@5d8f3404) 必须已断开。 CommunicationsException:通信链接
这个问题已经有答案了: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure (51
我的产品服务器出现以下异常,但几个小时后会自动解决。造成此问题的原因可能是什么 Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsExc
我是一名优秀的程序员,十分优秀!