【问题标题】:Php MySQL Connecting a database via MySQL does not work but ODBC doesPHP MySQL 通过 MySQL 连接数据库不起作用,但 ODBC 可以
【发布时间】:2015-09-30 04:42:07
【问题描述】:

我正在尝试通过 MySQL 连接到数据库,但它不起作用。我收到以下错误:

“连接失败:由于目标机器主动拒绝,无法建立连接。”

这是基本代码:

 <?php
 $servername = "server";
 $username = "username";
 $password = "password";

 // Create connection
 $conn = new mysqli($servername, $username, $password);

 // Check connection
 if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
 }
 echo "Connected successfully";
 ?> 

我可以从 Excel 连接到数据库,也可以使用下面的代码通过 ODBC 连接,但不能通过 MySQL:

  <?php
  $user = 'username';
  $pass = 'password';
  $server = 'server';
  $database = 'database';

  // No changes needed from now on
  $connection_string = "DRIVER={SQL Server};SERVER=$server;      DATABASE=$database";
  $conn = odbc_connect($connection_string,$user,$pass);

if (!$conn){
   exit("Connection to the database Failed: " . $conn);
}
echo "Connected successfully";
  ?>

有什么想法吗?

【问题讨论】:

  • 您尝试在一个上使用SQL Server 驱动程序,在另一个上使用mysqli 连接?服务器运行的是 MySQL 还是 Microsoft SQL Server?
  • 我正在等待数据库管理员确认,但它应该两者兼而有之。有没有不用等管理员检查的方法?
  • 如果您的连接被拒绝,它可能在非标准端口号上运行、被防火墙或不存在。最好从您的 DBA 获得确认,但如果 MySQL 和 MSSQL 中都提供相同的数据库,我会感到非常惊讶。

标签: php mysql database odbc


【解决方案1】:

您说您可以使用 odbc 进行连接,这意味着您拥有的是 SQL Server 数据库,而不是 Mysql 数据库。如果您不喜欢 odbc,pdo 是您的另一个选择。 mysqli 不是唯一的 mysql 选项。

【讨论】:

  • 我认为你是对的,但我仍在等待确认。我真的很想使用 MySQL,因为如果我错了,请纠正我,我失去了 ODBC 或 PDO 的一些功能。我正在构建一个将使用许多不同表的项目,所以也许我应该导入到 excel 中,然后导出到本地 MySQL。你们有什么感想?当然,我必须自动化它,也许每晚运行它..
  • 我认为你很困惑。 mysql 和 sql server 是数据库。没有混合 mysql/sqlserver 数据库之类的东西。你要么有一个。您正在连接到 sql server 数据库这一事实意味着您没有 mysql。这就是您需要的所有确认。当他收到您的问题时,您将让 db 管理员对您大笑。 ODBC 和 PDO 不是数据库,它们只是允许您连接到数据库的驱动程序,并且您不会丢失其中任何一个的任何功能。坚持使用 ODBC,一切都会变得很棒。
  • 好吧,澄清一下,你可以同时拥有两者,但它们不会是混合类型的东西,你仍然必须使用其中一个。
【解决方案2】:

试试这个代码:

<?php
$link = mysqli_connect('server','username','password','database');

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo("success");

?>

【讨论】:

  • 我尝试了您的代码并收到以下消息:错误:无法连接到 MySQL。 Debugging errno: 2002 Debugging error: 由于目标机器主动拒绝,无法建立连接。
  • 这可能是因为主机没有运行 MySQL 服务器,或者是因为防火墙阻止了端口。您运行的是 LAMP 还是 WAMP 堆栈?
  • 我正在运行一个 WAMP 堆栈。
猜你喜欢
  • 2020-07-07
  • 1970-01-01
  • 2013-03-19
  • 2014-07-12
  • 2016-01-31
  • 2018-11-09
  • 2013-08-06
  • 2021-08-11
  • 1970-01-01
相关资源
最近更新 更多