【问题标题】:MySQL only runs when Workbench connects to port 3306MySQL 仅在 Workbench 连接到端口 3306 时运行
【发布时间】:2019-06-13 11:45:07
【问题描述】:

我遇到了一个问题,我无法解决问题。

我想使用 JDBC 连接到 docker 容器内的 MySQL 数据库,但是我得到了这个:

无法创建 PoolableConnectionFactory(无法创建连接 到数据库服务器。尝试重新连接 3 次。放弃。)

<Context>
    <Resource name="jdbc/moviedb"
              auth="Container"
              driverClassName="com.mysql.jdbc.Driver"
              type="javax.sql.DataSource"
              username="user"
              password="pass"
              url="jdbc:mysql://localhost:3306/data?autoReconnect=true&amp;useSSL=false"/>
</Context>

然后我下载 MySQL Workbench 以确保 MySQL 在端口 3306 上运行。它正在运行并且我的表和数据正在显示。我去刷新了我的应用程序,突然间它显示了数据。为什么会这样?我觉得这与 localhost vs 127.0.0.1 (或其他任何内容)有关。上周,同样的项目在没有工作台的情况下运行,但是,唯一的区别是我没有使用 docker-compose 文件。

这是我用于容器的 docker-compose 文件:

version: "2.1"
services:
  database:
    container_name: data
    image: mysql
    volumes:
      - ./data.sql:/docker-entrypoint-initdb.d/data.sql
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: "data"
      MYSQL_USER: "user"
      MYSQL_PASSWORD: "pass"
      MYSQL_ROOT_PASSWORD: "root"

任何见解将不胜感激。

我忘了提到,当我第一次使用 docker-compose up 工作台创建容器时,并没有连接到数据库。只有我只是容器关闭,然后 docker compose start 工作台连接到服务器。

【问题讨论】:

  • 当您尝试连接应用程序时,您的数据库可能需要一些时间来启动。您能否删除 Workbench 并再次尝试从您的应用程序连接?
  • 我已经等了大约 10 分钟,它仍然没有启动。
  • 好吧,您的插入脚本正在运行

标签: mysql docker jdbc


【解决方案1】:

所以我发现问题是我的任务要求我使用一个包含 180,000 个插入语句的 SQL 文件,这就是为什么它需要这么长时间。我不得不手动将它们更改为只有一个具有多个值的插入语句。

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 2013-05-11
    • 2018-06-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多