数据库
首页 > 数据库> > php – 获取错误SQLSTATE [HY000] [2002]连接在NAS Synology上被拒绝

php – 获取错误SQLSTATE [HY000] [2002]连接在NAS Synology上被拒绝

作者:互联网

我正在制作一个在我的Synology NAS上托管的正在建设中的页面.

访客可以订阅他们的电子邮件,并在网站可用时获得通知.

我在将数据库添加到数据库的数据库和PHP代码时遇到问题.

如果服务器名称是localhost,我收到以下错误:

SQLSTATE[HY000] [2002] No such file or directory

当它是127.0.0.1或127.0.0.1:3306时,我收到以下错误:

SQLSTATE[HY000] [2002] Connection refused

我还没有在Stackoverflow上找到解决方案.

这里是PHP代码:

<?php

$servername = "localhost";
$username   = "id";
$password   = "password";
$dbname     = "dbname";

try {
    $conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password );
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sql = "INSERT INTO email ( email ) VALUES ( '$email' )";

    $conn->exec( $sql );
    echo "New record created successfully";
}

catch( PDOException $e )
{
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;

为什么我收到此错误?

解决方法:

我有同样的问题:

SQLSTATE[HY000] [2002] Connection refused

尝试从php连接到Synology NAS上运行的MariaDB数据库时.只提供用户名和密码

$conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password );

没有工作,虽然指定端口号,在其他地方找到的解决方案,也没有工作:

$conn = new PDO( "mysql:host=$servername;port=3307;dbname=$dbname", $username, $password );

什么工作(对我来说):

$conn = new PDO("mysql:host=$servername:3307;dbname=$database", $login, $password);

从Synology NAS的主菜单打开MariaDB 10属性窗口时,可以找到端口名称.
显然,port = 3307规范没有​​任何效果,但也没有给出错误消息.

标签:php,sql,database,pdo,synology
来源: https://codeday.me/bug/20190828/1751237.html