【问题标题】:CodeIgniter - Database Error while connecting from LocalhostCodeIgniter - 从 Localhost 连接时出现数据库错误
【发布时间】:2017-04-09 03:19:14
【问题描述】:

我对开发还很陌生,对 codeigniter 完全陌生。

我从我公司的服务器上下载了一个 CodeIgniter 项目,该项目是从以前的开发人员那里继承而来的。

我需要向网站添加一个新页面。由于我是 CI 新手,我(显然)不想编辑实时站点,但我无法让该站点在本地运行。我正在尝试通过 MAMP 或通过运行 Yosemite 10.10.5 的 Mac 上终端中的 PHP 服务器在本地服务器上运行它。

我已将项目文件夹添加到 MAMP 中的 htdocs,但是当我打开 http://localhost:8888/index.php/contact 时,屏幕是空白的。当我尝试通过终端访问同一个文件夹时:

env DB_USER=XXXX DB_PASSWD=XXXX DB_NAME=XXXX php -S localhost:8080

(其中“XXXX”替换为我们的数据库用户名和密码)

我收到以下错误:

无法使用提供的设置连接到您的数据库服务器。

文件名:core/Loader.php

行号:346

core/Loader.php 的第 346 行是附图中的public function database

我尝试过的事情:

• 我已尝试将 $config['base_url'] 更改为 'http://localhost:8888/';,但仍然遇到相同的错误

• 从database.php 文件中删除主机名、用户名和密码,仍然得到相同的错误

我不确定为什么本地版本无法访问数据库,而实时站点可以使用相同的登录凭据?非常感谢任何帮助,因为我刚刚开始这个新职位,这是我为公司工作的第一个项目之一,它让我很难过。我仍然需要弄清楚如何添加页面,但我什至无法在本地加载网站,所以我可以处理它。

更新

这是我的database.php 文件的样子.....它没有设置为数组:

/* The $active_group variable lets you choose which connection group to make active. By default there is only one group (the 'default' group). The $active_record variables lets you determine whether or not to load the active record class */

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'database_name'; // contains actual name
$db['default']['dbdriver'] = 'mysqli';
$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';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

** 链接到我(试图)解释这个问题的视频: **

链接#1:CodeIgniter Database Error Issue YouTube

感谢您的帮助!

core/loader.php

【问题讨论】:

  • 使用 Codeigniter,我总是在本地主机上运行副本,然后从那里对实时站点进行我需要的任何更改
  • 谢谢,我正在尝试在本地主机中运行并得到数据库错误,如上面链接中的视频所示
  • 所以我想通了,非常感谢所有的帮助!我(显然)在不同的位置安装了 mysql 数据库,而 MAMP 无法引用它。我意识到这一点是因为我导入的数据库没有显示在 MAMP > PHPMyAdmin 中。我遵循了从终端导入数据库的 Codeigniter 教程 - 然后从终端 php -S localhost:8080 运行内部 PHP 服务器。这就是导致数据库错误的原因 - 没有数据库! MAMP 看不到上传到终端文件夹位置的数据库。
  • @Ankit 为 Ci application > config > database.php 中的数据库文件提交的登录配置有效。密码需要设置为root。再次感谢大家的帮助!
  • 另外,当我尝试将数据库上传到 phpmyadmin 时,它太大了,所以我不得不从我的服务器上下载两个单独的文件。在上传之前将这两个文件压缩成一个 zip 文件也有帮助。

标签: php mysql codeigniter


【解决方案1】:

配置文件位于application/config/database.php

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

只需传递我提到// pass this 的参数,然后再试一次。

【讨论】:

  • 谢谢,我已经更改了这些设置,但仍然出现同样的错误。我已经将网站数据库下载到本地计算机并在 MySQl 中创建了一个同名数据库,通过终端将 .sql 文件导入 MySQL,因此 CodeIgniter 应该尝试访问该特定数据库。真是令人沮丧,我可以看到该网站的图标,所以我知道它正在加载一些文件.....
  • 我添加了指向视频的 OP 链接,希望能更好地解释/说明我正在使用的内容以及我遇到的错误。我在项目文件夹中有数据库文件......?
  • 请忽略对数据库文件的引用。我做了一个备份并将其放在我的项目文件夹中。
【解决方案2】:

如果你运行的是MAMP(Mac版)你的mysql默认密码是“root”

所以数据库配置文件看起来像

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root';
$db['default']['database'] = 'database_name'; // contains actual name
$db['default']['dbdriver'] = 'mysqli';
$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';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

更新$db['default']['password'] = 'root';

【讨论】:

  • 感谢 Ankit,我尝试了这个但没有运气,我仍然收到错误:发生数据库错误无法使用提供的设置连接到您的数据库服务器。文件名:core/Loader.php 行号:346
  • 请忽略对数据库文件的引用。我做了一个备份并将其放在我的项目文件夹中。
【解决方案3】:

确保 root 在 localhost 中具有登录权限。一些 MySQL 实例对这些事情非常严格。

【讨论】:

  • 感谢 Matias,这是我输入 SHOW GRANTS FOR 'root'@'localhost' 时得到的结果;
  • 上授予所有权限。 TO 'root'@'localhost' WITH GRANT OPTION | | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
猜你喜欢
  • 2020-04-04
  • 2016-06-21
  • 2021-06-08
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
相关资源
最近更新 更多