【问题标题】:Code Igniter : A Database Error Occurred SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client代码点火器:发生数据库错误 SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法
【发布时间】:2016-12-15 05:39:30
【问题描述】:

我正在尝试将网站上传到服务器。 Code Igniter 是我在这个网站上使用过的框架,也是我第一次使用 CI。在尝试使用以下数据库设置将网站上传到服务器时:

 $db['default'] = array(
    'dsn'   => 'mysql:host=localhost;dbname=database_name',
    'hostname' => 'mysql:host=localhost',
    'username' => 'database_user',
    'password' => 'database_password',
    'database' => 'database_name',
    'dbdriver' => 'pdo',
    '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
    );

我遇到以下错误,我尝试在网上搜索以解决我的问题。我发现了一些与我的问题相似的问题,但我不知道我应该做什么,因为大多数问题都是针对本地服务器的。请有人帮我解决一下谢谢。

A Database Error Occurred

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

Filename: controllers/Home.php

Line Number: 9


A PHP Error was encountered

Severity: Warning  
Message: PDO::__construct(): The server requested authentication method unknown to the client [mysql_old_password]
Filename: pdo/pdo_driver.php
Line Number: 133

Backtrace:

编辑:

【问题讨论】:

    标签: mysql database codeigniter


    【解决方案1】:

    您可以使用此代码在 database.php 中进行数据库设置

    $active_group = 'live';
    $active_record = TRUE;
    
    $db['live']['hostname'] = 'localhost';
    $db['live']['username'] = 'user';
    $db['live']['password'] = 'password';
    $db['live']['database'] = 'database';
    $db['live']['dbdriver'] = 'pdo';
    $db['live']['dbprefix'] = '';
    $db['live']['pconnect'] = TRUE;
    $db['live']['db_debug'] = TRUE;
    $db['live']['cache_on'] = FALSE;
    $db['live']['cachedir'] = '';
    $db['live']['char_set'] = 'utf8';
    $db['live']['dbcollat'] = 'utf8_general_ci';
    $db['live']['swap_pre'] = '';
    $db['live']['autoinit'] = TRUE;
    $db['live']['stricton'] = FALSE;
    

    在你的 config.php 中设置$config["useDatabaseConfig"] = true;

    我希望它对你有用。

    【讨论】:

      【解决方案2】:

      试试:

      $db['default'] = array(
          'hostname' => 'localhost',
          'username' => 'user',
          'password' => 'password',
          'database' => '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
      );
      

      或

      $db['default'] = array(
          'dsn'   => 'mysql:host=localhost;dbname=codeigniter',
          'username' => 'codeigniter',
          'password' => 'codeigniter',
          'database' => 'codeigniter',
          'dbdriver' => 'pdo',
          '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
      );
      

      【讨论】:

      • 执行第一种方式它给出了以下错误:致命错误:在第 136 行调用 /home/name/public_html/system/database/drivers/mysqli/mysqli_driver.php 中未定义的函数 mysqli_init()跨度>
      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2021-11-12
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多