有什么问题?无法连接数据库?
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (
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.)
答案 0 :(得分:20)
这是问题的实际原因:
引起: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信链路故障
您遇到数据库通信链接问题。确保您的应用程序具有对数据库的网络访问权限(并且防火墙不会阻止数据库的端口)。
答案 1 :(得分:4)
这是一个网络问题。检查数据库连接。 您的数据库连接链接,用户名和密码错误或数据库服务器已停止。
答案 2 :(得分:4)
我在源网址中遇到与localhost
相同的问题。
我决定使用127.0.0.1
代替localhost
。
答案 3 :(得分:3)
这是由avast防病毒引起的。您可以禁用avast防火墙,只允许Windows防火墙处于活动状态。
答案 4 :(得分:2)
当我使用chef在VirtualBox VM上设置tomcat和mysql服务器时遇到同样的问题。
在这种情况下,我认为真正的问题是VirtualBox似乎将非localhost地址分配给eth0,如
[vagrant@localhost webapps]$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:60:FC:47
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
然后使用10.0.2.15作为mysql服务器绑定地址的厨师食谱的自动检测功能。
所以在我的案例中指定了厨师食谱解决问题的节点参数的绑定地址。我希望这些信息可以帮助人们使用厨师和流浪汉。
{
"name" : "db",
"default_attributes" : {
"mysql" : {
"bind_address" : "localhost"
...
}
答案 5 :(得分:1)
这是因为防火墙阻止了数据库连接。
禁用防火墙,然后再次尝试运行该程序。它对我有用......:D
答案 6 :(得分:1)
在Windows的以下路径中转到my.ini
文件
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
并评论以下行
#bind-address=127.0.0.1
然后重新启动MySQL服务器并连接。
然后,您将能够从其他IP地址/机器连接到MySQL。
答案 7 :(得分:1)
此特定问题也可能在本地主机中出现。我们不能排除这是因为网络问题或Internet连接问题。即使所有数据库连接属性都正确,也会出现此问题。
使用主机名时,我遇到了同样的问题。而是使用IP地址。它将解决。
答案 8 :(得分:0)
我在pom.xml中更改了驱动程序版本并为我提供帮助
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#S1">Season 1</a>
</h4>
</div>
<div id="S1" class="panel-collapse collapse in">
<div class="panel-body">
<div id="result">
<div class="row"></div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#S2">Season 2</a>
</h4>
</div>
<div id="S2" class="panel-collapse collapse">
<div class="panel-body">
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#S3">Season 3</a>
</h4>
</div>
<div id="S3" class="panel-collapse collapse">
<div class="panel-body">
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
load_data();
function load_data(epi) {
$.ajax({
url: "fetch.php",
method: "POST",
data: { query: epi },
success: function (data) {
$('#result').html(data);
}
});
}
});
</script>
</body>
</html>
答案 9 :(得分:0)
对于我来说,解决方案是删除属性
validationQuery="select 1"
(来自(Derby DB)资源标签)。
答案 10 :(得分:0)
问题可能是由于太多用户同时访问数据库。增加可以同时访问数据库的用户数量,或者踢出现有用户(或应用程序)。使用“显示进程列表;”在主机数据库中检查已连接的用户;
我遇到了另一个原因,catalina.policy文件可能会禁止访问特定的IP / PORT
答案 11 :(得分:0)
尝试
jdbc:sqlserver://hostname:port;databaseName=TEST
在端口号前加冒号而不是逗号后,它对我有用
答案 12 :(得分:-1)
如果您使用apache tomcat 8.0版本而不是它,请使用tomcat 7.0 我曾尝试过localhost到127.0.0.1并关闭防火墙但没有工作,但是使用tomcat 7.0并且正在运行
答案 13 :(得分:-1)
我有类似的错误。更改JDBC URL以使用127.0.0.1而不是localhost帮助。
还试过更改catalina.policy文件中的条目,但这没有帮助。 我更改的条目是 - java.net.SocketPermission