【问题标题】:Codeigniter Error "Unable to connect to your database server using the provided settings"Codeigniter 错误“无法使用提供的设置连接到您的数据库服务器”
【发布时间】:2012-03-21 15:38:41
【问题描述】:

当我尝试在我的域 m 上上传此项目时,遇到错误“无法使用提供的设置连接到您的数据库服务器”

我检查了我的 config.phpdatabase.php 文件,所有信息都正确无误:

 $db['default']['hostname'] = "etc.com";
 $db['default']['username'] = "etc"; 
 $db['default']['password'] = "etc@etc";
 $db['default']['database'] = "visiting_link";
 $db['default']['dbdriver'] = "mysql";
 $db['default']['dbprefix'] = "";
 $db['default']['pconnect'] = TRUE;
 $db['default']['db_debug'] = TRUE;
 $db['default']['cache_on'] = FALSE;
 $db['default']['cachedir'] = "";
 $db['default']['char_set'] = "utf8";
 $db['default']['dbcollat'] = "utf8_general_ci"; 

这个问题有什么解决办法吗?请参考任何帮助材料。 我正在使用fileZilla。
谢谢!

【问题讨论】:

  • 尝试将hostname参数更改为与域关联的IP地址。

标签: php codeigniter


【解决方案1】:

将“db_debug”设置为 false 解决了我的问题。

我正在使用雪豹。

编辑:db_debug 只是混淆了我的方向。在我的情况下,解决方案只是 mysql.sock 参考路径,正如在这个问题上所解决的那样:Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in

OS X 使用 /tmp/mysql.sock,默认情况下 php.ini 引用 /var/mysql/mysql.sock。只需创建一个符号链接即可解决问题:

sudo mkdir -p /var/mysql/ && cd /var/mysql/
sudo ln -s /tmp/mysql.sock ./mysql.sock

【讨论】:

    【解决方案2】:

    尝试将“dbdriver”设置为“mysqli”

    $db['default']['dbdriver'] = "mysqli";
    

    这是 MySQL 改进扩展 (http://php.net/manual/en/book.mysqli.php),您的服务器可能设置为使用此扩展而不是标准 MySQL 扩展。

    当所有其他设置都正确时,我已经看到这种情况发生了几次,因为如果选择了错误的驱动程序,连接将会失败。

    【讨论】:

      【解决方案3】:

      如果数据库设置正确,那么其他地方就有问题:

      • 可能数据库不接受来自任何地方的连接;在这种情况下,您需要允许来自您的“用户名”@“服务器 IP”的连接

      • 可能由于 php.ini 设置、防火墙或其他原因,PHP 或服务器本身不允许连接

      回到 CI DB 设置,您需要确保它们是正确的。您确定“主机名”正确吗?

      【讨论】:

        【解决方案4】:

        我遇到了这个错误

            <div id="container">
                <h1>A Database Error Occurred</h1>
                <p>Unable to connect to your database server using the provided settings.</p>
                <p>Filename: C:/xampp/htdocs/WORK/Vishal/UI-Demo/system/database/DB_driver.php</p>
                <p>Line Number: 436</p>
            </div>
        

        我通过将 database.php 中的调试选项更改为 FALSE 解决了这个错误

        'db_debug' =>(环境!=='生产'),

        'db_debug' => 假,

        改变这个

        $db['default'] = array(
        'dsn'   => '',
        'hostname' => 'XXXX',
        'username' => 'XXXX',
        'password' => 'XXXX',
        'database' => 'XXX',
        '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
        

        );

        收件人

        $db['default'] = array(
        'dsn'   => '',
        'hostname' => 'XXXX',
        'username' => 'XXXX',
        'password' => 'XXXX',
        'database' => 'XXX',
        '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
        

        );

        【讨论】:

          【解决方案5】:

          如果您在共享主机环境中遇到此问题。然后我认为您必须提供与 cpanel/hosting 凭据相同的数据库凭据。

          $db['default']['hostname'] = "localhost";
          $db['default']['username'] = "cpanel/hosting username"; 
          $db['default']['password'] = "cpanel/hosting password";
          $db['default']['database'] = "dbname";
          

          【讨论】:

            【解决方案6】:

            如果您使用 codeigniter 3,请使用最新版本的 php。一旦我遇到这些错误,然后我更新了我的 php,然后在我的项目上成功设置 codeigniter 后它就可以工作了。

            请按照您的应用程序/config/database.php 进行操作

            $active_group = 'default';
            $query_builder = TRUE;
            
            $db['default'] = array(
                'dsn'   => '',
                'hostname' => 'localhost',
                'username' => 'root',
                'password' => '',
                'database' => 'db_bdtimes', // your database name
                '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
            );
            

            【讨论】:

              【解决方案7】:

              试试这个 $db['default']['hostname'] = "localhost";

              【讨论】:

                【解决方案8】:

                这解决了我在服务器上部署 codeigniter CMS 时遇到的问题,尽管它在具有 TRUE 属性的 localhost 中运行良好。 将 database.php 中的这一行更改为如下所示:

                $db['default']['pconnect'] = FALSE;
                

                还要检查此行是否与服务器数据库的排序规则匹配(也适用于所有表):

                $db['default']['dbcollat'] = "utf8_general_ci";
                

                【讨论】:

                  猜你喜欢
                  • 2020-01-11
                  • 2016-04-15
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-11-07
                  • 2016-02-02
                  • 2015-09-08
                  • 1970-01-01
                  相关资源
                  最近更新 更多