【问题标题】:MySQL error on trying to open a MySQL connection尝试打开 MySQL 连接时出现 MySQL 错误
【发布时间】:2012-06-22 00:45:33
【问题描述】:

当我尝试打开与我的 MACBOOK 上运行的 MySQL 的连接时出现以下错误:

警告:mysql_connect(): [2002] /Users/Eugene/Sites/website/includes/database.php 中没有这样的文件或目录(试图通过 unix:///var/mysql/mysql.sock 连接)在第 15 行警告:mysql_connect():第 15 行的 /Users/Eugene/Sites/website/includes/database.php 中没有这样的文件或目录 注意:未定义的变量:/Users/Evgeny/Sites/website/includes/ 中的连接第 16 行的 database.php 数据库连接失败:没有这样的文件或目录

我的常量是:

defined('DB_SERVER') ? null : define("DB_SERVER", "localhost");
defined('DB_USER') ? null : define("DB_USER", "eugene");
defined('DB_PASS') ? null : define("DB_PASS", "password"); // no comments please :)
defined('DB_NAME') ? null : define("DB_NAME", "maindb");

我尝试连接的方式是:

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
if(!$connection) // if no connection - die
{
    die("Database connection failed: " . mysql_error());
}
else // if there is a connection, then go and select a database
{
    $db_select = mysql_select_db(DB_NAME, $connection);
    if(!$db_select) // if no database selected - die
    {
        die("Database selection failed: " . mysql_error());
    }
}

请帮忙,

提前致谢。

【问题讨论】:

  • 确认可以通过命令行连接:

标签: php mysql localhost


【解决方案1】:

$this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);

第一个问题是 mysqld 没有使用与客户端相同的套接字路径。尝试通过 127.0.0.1 访问,然后运行“显示变量”以找到它放置套接字的位置 - 适当地更新您的 PHP 配置。

如果(!$连接)

但是你把连接放在'$this->connection'而不是'$connection'

【讨论】:

  • 感谢您的回复,这是我写问题时的一个错字。
  • 顺便说一句,这似乎可以通过修复my.cnf[mysql_client] 部分(最常见于/etc/mysql/my.cnf)来解决(如果您有足够的访问权限)。在某处,默认套接字从/var/mysql/mysql.sock 更改为/var/mysql/mysqld.sock,然后一切都乱套了。或者,您可以从 [mysql_client] 部分完全删除套接字引用以强制 tcp(这是 127.0.0.1 所做的)。
【解决方案2】:

您正在通过$this 设置实例变量,但测试的是局部变量。假设没有其他更改,您的代码应如下所示:

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
if (!$connection) // if no connection - die
{
    die("Database connection failed: " . mysql_error());
}

试试看!

【讨论】:

  • 哦,是的,对不起,我在写这个问题时打错了,但仍然无法正常工作:(
【解决方案3】:

您正在混合类变量和局部变量。 $this->connection$connection 不同。

【讨论】:

    【解决方案4】:

    如果你从一个类中调用 $connection,只需输入 if(!$this->connection){.....} 或者如果不只是把这一行 if (!$connection){.....}

    【讨论】:

      猜你喜欢
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多