出现错误 mysqli::real_connect(): (HY000/2002): 当我尝试在实时服务器上访问我的项目时没有这样的文件或目录

Getting error mysqli::real_connect(): (HY000/2002): No such file or directory when I try to access my project on live server

我已将我的网站上传到服务器,然后尝试访问,但代码触发了 returns 我找不到任何答案的错误。为什么会这样?

我的配置数据库设置如下:

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'netservice',
'password' => '*********',
'database' => 'valedastrutas',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => FALSE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE,
);

我遇到了同样的问题。我正在使用我的 /etc/hosts 文件中定义的主机:

127.0.0.1test.localhost

并按照教程中的方式连接 url http://test.localhost/index.php/news/view。我收到了那个错误,只是通过更改行来修复它:

'hostname' => 'localhost',

至:

'hostname' => 'test.localhost',

我使用 AWS RDS MySQL 时也遇到了同样的问题。看了各种来源,但截至本帖,几乎都没有答案。 虽然 帮助了我,但请记住在服务器上更新主机名。访问您的 SSH 并按照以下步骤操作:

cd /etc/
sudo nano hosts

现在,在此处附加您的主机名: 例如:

127.0.0.1 localhost
127.0.0.1 subdomain.domain.com [if cname redirected to endpoints]
127.0.0.1 xxxxxxxx.xxxx.xxxxx.rds.amazonaws.com [Endpoints]

现在,配置 config/database.php 如下:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '35.150.12.345',
    'username' => 'user-name-here',
    'password' => 'password-here',
    'database' => 'database-name-here',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

其中 35.150.12.345 是你的 IPv4 Public IP,位于 ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP('35.150.12.345') 那里。

注意:请注意只有 IPV4 可以在 'hostname' 选项下工作。 hostname, cname, domains 会输出数据库连接错误。

建议你启用并查看详细的php_errors.log

检查在php.ini中使用session.save_path指定的目录是否存在且可写。您可以使用 phpinfo() 来显示实际的 session.save_path.

创建指定为 session.save_path 的缺失 "phptmp" 目录为我解决了这个问题。

MySQL 连接驱动程序在本地主机位置没有获得任何有意义的服务器。所以使用,

'hostname' => '127.0.0.1' 

而不是

'hostname' => 'localhost'

我遇到了同样的问题,在我的情况下,网站 运行 正常运行了很长时间。由于这里的很多答案都涉及第一次安装和使用,我决定为已经正常运行一段时间然后突然出现此错误的系统解决同样的问题。

首先我认为理解这个问题很重要。据我所知(我可能是错的)如果驱动程序无法保护与数据库的连接,就会出现此问题。这可能是由多种原因引起的,包括数据库因任何问题或维护而关闭。

就我而言,问题是在 MySQL 更新期间访问网站时引起的(软件更新程序 运行 在后台更新 MySQL 组件)。所以我不得不等待更新完成,然后网站又恢复正常 运行 没有问题。

所以也要记住这一点。

我遇到了这个错误

mysqli::real_connect(): (HY000/2002): No such file or directory

来自我的 Mac Mojave 上的 PhpMyAdmin 运行,MySQL 服务器也在我的 Mac.

上 运行

通过编辑 PhpMyAdmin/config.inc.php 修复了它并更改了行:

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['host'] = '127.0.0.1';

也有这个问题。唯一帮助我的解决方案 - 首先通过命令“service mysql stop”停止 mysql 服务器,然后 运行 再次启动 lampp:“sudo /opt/lampp/lampp start”。

None 其他答案对我有用。我在 Mac OS 10.14.6 上安装了 MySQL 8.0.22,在命令行下运行良好。但是,我所做的是在升级时选择了更强的密码加密MySQL。这是问题所在,而不是本地主机配置。 config.inc.php 可以指向 'localhost' 或“127.0.0.1”。一旦我得到 phpMyAdmin 运行,我通过使用两者来确认这一点。

(对我而言)解决此问题的方法是单击 Mac 系统偏好设置并选择 MySQL。单击 Initialize Database,然后切换到“Legacy password encryption”。重新启动,一切正常。 MySQL 重新启动,phpMyAdmin 在 http:///localhost/phpmyadmin 让我登录没有问题。

我正在等待将 Mac 升级到 OS 15,一旦我确定我不会把这个愚蠢的东西弄成砖块。

在 phpmyadmin 版本 5.1.0 中所有语言,配置。文件位于 libraries/config.default.php

进行以下更改:

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['host'] = '127.0.0.1';

在我的情况下,需要重新启动 mysql,因为它已停止 运行

在我的例子中,我在 ubuntu

中打开控制台并 运行 重新启动命令
sudo service mysql restart