MySQL 仅在 Workbench 连接到端口 3306 时运行

标签 mysql docker jdbc

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

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

Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)

<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 工作台才会连接到服务器。

最佳答案

所以我发现问题出在我的作业上,要求我使用包含 180,000 个插入语句的 SQL 文件,这就是为什么它花了这么长时间。我必须手动将它们更改为只有一个具有多个值的插入语句。

关于MySQL 仅在 Workbench 连接到端口 3306 时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54267039/

相关文章:

java - 带有 jib 的 JRE 版本 (Docker)

java - 动态传递 JNDI 名称

php - mysql中多列求和

mysql - 不是mysql的作业存储引擎?

docker - 使用docker设置vuejs-template-webpack保存文件后不会重新加载

sql-server - SQL Server Linux Docker 镜像不断退出

php - 查询错误 (1052) : Column 'register_log_id' in field list is ambiguous

php - 为一个产品上传和显示多张图片?

java - 使用 Struts 2 将表单数据保存在数据库中

java - JOIN 中的相同列名在 ResultSet 中出现 "column not found"错误