gpt4 book ai didi

php - 无法建立数据库连接;无效的数据源名称(仅限 PDO)

转载 作者:行者123 更新时间:2023-11-29 13:05:04 26 4
gpt4 key购买 nike

我正在尝试使用 PHP 访问我的新 PGSQL 数据库。问题是我收到标题中给出的错误。当我尝试直接连接时。它有效,当我尝试通过 PDO 连接时,它给出了这个错误。

我检查了什么:

  • PHP.ini。所需的扩展未注释(php_pgsql.dllphp_pdo_pgsql.dll)
  • 确保这两个文件确实在 PHP 文件夹中。
  • 使用简单脚本(如下所示)确保数据库、主机、用户、密码和端口正确

    这是我用于设置数据库的配置文件(我正确使用了 6 个数据库。所以我知道错误不在那个文件中)

    "Aeges":{
    "pdo_driver":"odbc",
    "user":"XXXX",
    "password":"XXXX",
    "database":"test",
    "host":"localhost",
    "port":1233
    },
    "Postgre":{
    "pdo_driver":"pgsql",
    "user":"XXXX",
    "password":"XXXX",
    "database":"ASN",
    "host":"localhost",
    "port":5432
    }
    etc..

这是我检索信息的功能。我稍微清理了一下以使其清晰

public static function findAvailableASN()
{
$Postgre = db\Factory::getInstance()->create('Postgre');
$stmt = $Postgre->prepare("select * from asnregel.asnregel");
if ($stmt->execute())
{
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}

/* $connect = pg_connect("host=localhost port=5432 dbname=ASN user=XXXX password=XXXX");
if(!$connect) {
die("Error in connection: ".pg_last_error());
}
$sql = "select * from asnregel.asnregel";
$result = pg_query($connect,$sql);
if(!$result) {
die("Error in sql query: ".pg_last_error());
}

while($row = pg_fetch_array($result)) {
echo $row[0].'<br/>';
echo $row[1].'<br/>';
echo $row[2].'<br/>';
echo $row[3].'<br/>';
}

pg_free_result($result);
pg_close($connect); */
}

所以问题是第一部分不起作用(带有 PDO 的部分)。而评论(没有 PDO 的部分)确实如此。有点奇怪吧?

谁能帮我解决这个问题?

最佳答案

Invalid data source name

错误信息很清楚。数据源名称是您在PDO 构造函数。而且它似乎无效。

因此,无需检查 php.ini、php_pgsql.dll 或密码 - 所有这些错误都有其独特的错误消息需要处理。
因此,您只需更正 DSN 字符串即可。直接从手册页打印出您当前的 DSN 并将其与规范的 DSN 进行比较。例如,对于 pgsql,正确的 DSN 格式应该是

pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass

而对于所有 pther 驱动程序,正确的格式可以在 manual 中找到

关于php - 无法建立数据库连接;无效的数据源名称(仅限 PDO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15895959/

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