CodeIgniter - 从本地主机连接时出现数据库错误

问题描述 投票:0回答:4

我对开发相当陌生,对 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 数据库错误问题 YouTube

感谢您的帮助!

核心/loader.php

php mysql codeigniter
4个回答
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';


2
投票

配置文件位于

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
,然后重试。


1
投票

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


0
投票

je viens de realiser tout sur codeigniter mais je ne parviens a backuver la page sur xamp apres avoir le ";"在 php.ini 和 aussi ajouter "C:\xampp\php" 和环境变量中

© www.soinside.com 2019 - 2024. All rights reserved.