mysqli :: real_connect():( HY000 / 2002):Live

时间:2015-10-03 06:19:30

标签: php codeigniter mysqli

我使用PHP,Mysql和Codeignater版本3创建一个网站。然后在iPage上托管它。当我上传时,我在配置文件中进行了更改。

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '66.96.147.118',
    'username' => 'bit_root',
    'password' => 'root',
    'database' => 'bit_shilp',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

我使用codeignater版本3.在本地它工作得很好。但在现场网站上它会出错。

请参阅此链接http://bitshilp.com/BitShilp/index.php/home

它给出了这样的错误:

  

遇到PHP错误

     

严重性:警告

     

消息:mysqli :: real_connect():( HY000 / 2002):拒绝连接

     

文件名:mysqli / mysqli_driver.php

     

行号:161

     

回溯:

     

文件:/hermes/bosnaweb13a/b2582/ipg.bitshilpcom/BitShilp/application/controllers/Home.php   行:7   功能:__construct

     

文件:/hermes/bosnaweb13a/b2582/ipg.bitshilpcom/BitShilp/index.php   行:292   功能:require_once   遇到PHP错误

     

严重性:警告

     

消息:无法修改标头信息 - 已经发送的标头(输出开始于   /hermes/bosnaweb13a/b2582/ipg.bitshilpcom/BitShilp/system/core/Exceptions.php:272)

     

文件名:core / Common.php

     

行号:568

     

回溯:

     

文件:/hermes/bosnaweb13a/b2582/ipg.bitshilpcom/BitShilp/application/controllers/Home.php   行:7   功能:__construct

     

文件:/hermes/bosnaweb13a/b2582/ipg.bitshilpcom/BitShilp/index.php   行:292   功能:require_once

感谢。

7 个答案:

答案 0 :(得分:0)

如果MySQL服务器启动并运行 - 那么这看起来像是一些传输(例如防火墙)问题。第一步是尝试下面的telnet命令 - 如果它显示错误,那么问题与PHP或MySQL无关:

__declspec( align( 16 ) ) class PhysicsSystem
{
public:
    static const int32_t MaxEntities = 65535;

    __declspec( align( 16 ) ) struct VectorizedXYZ
    {
        double      mX[ MaxEntities ];
        double      mY[ MaxEntities ];
        double      mZ[ MaxEntities ];

        VectorizedXYZ()
        {
            memset( mX, 0, sizeof( mX ) );
            memset( mY, 0, sizeof( mY ) );
            memset( mZ, 0, sizeof( mZ ) );
        }
    };

    void Update( double dt )
    {
        for ( int32_t i = 0; i < MaxEntities; ++i ) <== 1200
        {
            mTmp.mX[ i ] = mPos.mX[ i ] + mVel.mX[ i ] * dt;
            mTmp.mY[ i ] = mPos.mY[ i ] + mVel.mY[ i ] * dt;
            mTmp.mZ[ i ] = mPos.mZ[ i ] + mVel.mZ[ i ] * dt;
        }
    }

private:    
    VectorizedXYZ   mTmp;
    VectorizedXYZ   mPos;
    VectorizedXYZ   mVel;
};

(成功时会打印mysql版本+一些随机字符)

答案 1 :(得分:0)

Facing same issue in codeigniter

$db['develop'] = array(
    'dsn'   => '',
    'hostname' => 'xxxxxxxxxxx.us-east-1.rds.amazonaws.com',
    'username' => 'xxxxxxxx',
    'password' => 'xxxxxxxx',
    'database' => 'xxxxxxx',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
//  'char_set' => 'utf8',
//  'dbcollat' => 'utf8_general_ci',
        'char_set' => 'utf8mb4',
        'dbcollat' => 'utf8mb4_unicode_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE


Not able to connect db

A PHP Error was encountered

Severity: Warning

Message: mysqli::real_connect(): (HY000/2002): Connection timed out

Filename: mysqli/mysqli_driver.php

Line Number: 201

答案 2 :(得分:0)

使用AWS RDS MySQL,我遇到同样的问题。看了各种各样的消息来源,但截至本帖,几乎都缺乏答案。 虽然this answer帮助了我,但请记住更新服务器上的主机名。访问您的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公共IP ,位于ec2-dashboard > Network Interfaces > Description : RDSNetworkInterface >> IPv4 Public IP(&#39; 35.150.12.345&#39;)那里。

注意:请注意,只有IPV4才能在&#39;主机名&#39;选项。 hostname,cname,domains将输出数据库连接错误。

答案 3 :(得分:0)

您可以使用以下命令检查 mysql 是否正在运行:

mysql.server status

如果不是,则开始:

mysql.server start

同样停止:

mysql.server stop

答案 4 :(得分:0)

在 Codeigniter 中将您的 'hostname' => '35.150.12.345' 更改为 'hostname' => 'localhost',

答案 5 :(得分:0)

如果这是 Fedora 中的问题 每次都必须启动 MariaDB 就跑

sudo systemctl start mariadb

还要记住,每次启动时,都必须以同样的方式启动Apache 所以每次使用上面的代码之前都要运行下面的代码

sudo service httpd start

祝你好运

答案 6 :(得分:0)

我正在使用 Pop!_OS。在最近的操作系统升级到 21.4 之后,似乎 MySQL 包被自动删除/丢失了。虽然 mysql --version 显示我有可用的 MySQL。

我尝试了所有其他可能的解决方案,但没有一个奏效。再次安装 MySQL 后为我解决了这个问题。我已经运行了以下命令。顺便说一句,我没有丢失任何数据库。

 sudo apt-get install mariadb-server mariadb-client