gpt4 book ai didi

mysql - Play Framework 2.3 - 无法连接到远程数据库 Linux (Play) -> Win 7 (MySQL)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:14 24 4
gpt4 key购买 nike

我有一台 Linux 机器(在 10.0.0.10 上),我部署了我的 Play 应用程序:

激活器分布

我有一台运行 MySQL 的 Windows 机器(在 10.0.0.51 上)。

数据库设置了3个用户帐号root@localhost,db_user@localhost,db_user@%所有用户都有所有权限(是仅用于测试)。

我可以使用 mysql shell 从 Linux 机器访问数据库:

[neil@localhost ~]$ mysql -u db_user -p -h 10.0.0.51
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test_db |
| mysql |
| performance_schema |
| sakila |
| test |
| world |
+--------------------+
8 rows in set (0.04 sec)

mysql>

其中test_db是我在Windows机器上设置的测试数据库。

但是,当我尝试运行 Play 应用程序时,我得到以下信息:

[neil@localhost ~]$ ~/TEST_APP-1.0-SNAPSHOT/bin/test_app
Play server process ID is 5908
[error] c.j.b.h.AbstractConnectionHook - Failed to obtain initial
connection Sleeping for 0ms and trying again. Attempts left: 0.
Exception: java.net.ConnectException: Connection
refused.Message: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.
Oops, cannot start the server.
Configuration error: Configuration error[Cannot connect to database
[db_user]]
at play.api.Configuration$.play$api$Configuration$$configError
(Configuration.scala:94)

...

Caused by: 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.

...

这是我的 application.conf 中的数据库配置:

db.db_user.driver=com.mysql.jdbc.Driver
db.db_user.url="jdbc:mysql://10.0.0.51:3306/test_db?allowMultiQueries=true"
db.db_user.user=db_user
db.db_user.pass="password"
db.db_user.partitionCount=3
db.db_user.maxConnectionsPerPartition=20
db.db_user.minConnectionsPerPartition=5
db.db_user.acquireIncrement=5

值得注意的是,当我在 Windows 上以开发模式运行应用程序时,此配置有效。但我不知道 Linux 机器出了什么问题,我已经没有什么可以尝试的了。 (请注意,我在关闭所有防火墙的情况下尝试过此操作并遇到了同样的问题)。

更新

在我使用的 Play 应用程序中:

public static final String DB_USER = "db_user";

...

JdbcTemplate jt = new JdbcTemplate(DB.getDataSource(DB_USER));

所以我不应该在 conf 中使用 db.default.etc...?这不对吗?

更新 2

我不知道我是怎么错过这个的,但是在堆栈跟踪中还有其他东西可以指示问题(堆栈跟踪很长所以我不想列出整个事情,也许我应该有):

Caused by: java.net.ConnectException: Connection refused

所以...服务器正在监听端口 3306,在运行 netstat -an 的 Windows 服务器上产生:

TCP    0.0.0.0:3306     0.0.0.0:0     LISTENING
TCP [::]:3306 [::]:0 LISTENING

防火墙已关闭(我知道...只是为了测试)。

MySQL 正在接受来自 CLI 的连接。

虽然我刚刚灵机一动……application.conf 是在 Windows 上生成的……我想知道我是否需要在配置文件上运行 dos2unix 这就是为什么它找不到 "db_user"

更新 3

没有:(

最佳答案

你需要在conf中使用db.defaultfrom JavaDatabase

关于mysql - Play Framework 2.3 - 无法连接到远程数据库 Linux (Play) -> Win 7 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com