1

我知道这个问题在这个网站上是一个反复出现的问题,但我的问题与以前的问题有点不同。

问题

一些页面使用正确的套接字目录,而其他页面尝试通过不正确的套接字目录进行连接,或者这就是我认为问题是基于我收到的错误。

细节

主机:example.com

cakePHP 版本:1.3.2(不是我的选择)。

页面的内容来自数据库。

网址:http ://example.com

我的网站有 2 个部分:

  • 匿名部分
  • 会员或管理员的登录部分

匿名部分有效。它访问数据库、添加内容和应有的功能。

错误

当我单击主页上“工作链接”下的链接“查看更多..”时发生错误。应该会弹出一个登录表单,但我收到错误“无法通过套接字'/var/run/mysqld/mysqld.sock' (2) 连接到本地 MySql 服务器”。

此外,在我通过主页上的“会员登录”按钮登录后,使用正确的凭据,它也会产生同样的错误。

问题

为什么我网页上的不同部分会尝试通过不同的目录访问套接字?

额外的东西

我今天注册了,这是我的第一篇文章,所以对我的帖子提供足够信息的反馈将对以后的帖子有所帮助。

谢谢你的时间。

更新

经过进一步研究,MySql 从一开始就一直使用套接字目录 /var/run/mysqld/mysqld.sock。不确定这意味着什么,但继续研究..

数据库.php 文件

类 DATABASE_CONFIG {

var $default = array(
    'driver' => 'mysqli',
    'persistent' => true,
    'host' => 'redlabelcom.netfirmsmysql.com',
    'login' => 'bcp',
    'password' => '********',
    'database' => 'bcp',
    'prefix' => '',
    'encoding' => 'UTF8',
    //'socket' => '/var/run/mysqld/mysqld.sock', // I've tried commenting out all variations of socket and port
    //'port' => '/var/run/mysqld/mysqld.sock',   // nothing works.
);

var $test = array(
    'driver' => 'mysqli',
    'persistent' => false,
    'host' => 'redlabelcom.netfirmsmysql.com',
    'login' => 'bcp',
    'password' => '********',
    'database' => 'bcp',
    'prefix' => '',
    'encoding' => 'UTF8',
    //'port' => '/var/run/mysqld/mysqld.sock',
);

} ?>

4

3 回答 3

0

这个问题真的很奇怪。我想这与mysql连接有关。MySQL 是一个守护进程,通常配置在 /etc/mysql/my.cnf 中。在那里您定义客户端将如何连接 MySQL 服务器:

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

如果您的套接字错误(服务器上没有这样的套接字),您可能正在从应用程序的匿名/安全部分连接不同的 mysql 主机/端口。这是可能的(我的意思是来自不同应用程序部分的不同数据库连接)。检查您的配置(主机、端口等)并尝试从 MySQL 控制台连接:

$ mysql -h hostname -u username -p dbname # enter password

并检查是否可以连接。如果您可以从控制台连接,那么您肯定会从任何服务器端应用程序(php、python 等)进行连接。

这是别人正在开发的应用程序,对吧,现在你必须维护它?

于 2013-02-22T20:54:07.627 回答
0

问题解决了!

感谢大家的支持!

这是一个有趣的问题,最初看起来比实际问题更复杂。

如果您需要访问 phpbb 数据字段,cakephp 版本 1.3.2 设置为与数据库建立新连接。新连接使用与 database.php 文件中设置的配置不同的配置。

以下是文件位置的详细说明。

'app/webroot/discussion/common.php'文件使用与 database.php 文件不同的一组 MySql 参数与数据库建立新连接。同样,它不使用 database.php 的 MySql 配置。

相反,cakephp 定义了位于以下位置的新连接变量: 'app/webroot/discussion/config.php'

要解决问题,只需更改

$dbhost => 本地主机 -> $dbhost => 你的服务器名

$dbname => 错误名称 -> $dbname => 正确名称

ETC..

请记住,以前的开发人员可能更改了这些值,所以如果这对您没有帮助,那么祝您好运。

顺便说一句,上面的错误消息是尝试连接到 localhost 的结果。

于 2013-02-26T08:48:26.260 回答
0

为了解决这个问题,我运行了以下命令:

mysqld --tc-heuristic-recover=ROLLBACK

systemctl 启动 mariadb.service

于 2020-07-19T06:21:46.697 回答