【问题标题】:No database selected error in CodeIgniter running on MAMP stack在 MAMP 堆栈上运行的 CodeIgniter 中没有选择数据库错误
【发布时间】:2025-12-28 01:10:17
【问题描述】:

首先,有谁知道获得 CodeIgniter 帮助的好地方吗?官方社区论坛在收到很多回复方面有些令人失望。

我在常规 MAMP 堆栈上安装了 ci,我正在使用 this tutorial。但是,我只浏览了 Created 部分,目前我收到 No database selected 错误。

型号:

<?php 
class submit_model extends Model {

    function submitForm($school, $district) {
        $data = array(
            'school' => $school,
            'district' => $district
        );

        $this->db->insert('your_stats', $data);
    }

} 

查看:

<?php $this->load->helper('form'); ?>

<?php echo form_open('main'); ?>

    <p>
        <?php echo form_input('school'); ?>
    </p>

    <p>
        <?php echo form_input('district'); ?>
    </p>

    <p>
        <?php echo form_submit('submit', 'Submit'); ?>
    </p>

<?php echo form_close(); ?> 

控制器:

<?php
class Main extends controller {

    function index() {

        // Check if form is submitted
        if ($this->input->post('submit')) {
            $school = $this->input->xss_clean($this->input->post('school'));
            $district = $this->input->xss_clean($this->input->post('district'));

            $this->load->model('submit_model');
            // Add the post
            $this->submit_model->submitForm($school, $district);
        }
        $this->load->view('main_view');
    }
} 

数据库.php

$db['default']['hostname'] = "localhost:8889";
$db['default']['username'] = "root";
$db['default']['password'] = "root";
$db['default']['database'] = "stats_test";
$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"; 

config.php

$config['base_url']    = "http://localhost:8888/ci/";
...
$config['index_page'] = "index.php";
...
$config['uri_protocol']    = "AUTO"; 

那么,它怎么给我这个错误信息?

A Database Error Occurred
Error Number: 1046

No database selected

INSERT INTO `your_stats` (`school`, `district`) VALUES ('TJHSST', 'FairFax') 

我有什么方法可以测试 CodeIgniter 是否真的可以检测到我在 MAMP 堆栈中使用 phpMyAdmin 创建的 mySQL 数据库?

【问题讨论】:

    标签: mysql database codeigniter


    【解决方案1】:

    首先检查显而易见的 - 是否有数据库 stats_test,您可以使用配置中的详细信息进行连接吗?您可能遇到用户权限问题。还要检查您在 database.php 文件的开头是否有一行 $active_group = 'default';,表示使用这些连接参数。

    顺便说一句,我建议将$db['default']['pconnect'] 设置为false 而不是true。很多人在使用它时遇到了连接问题,特别是如果您有网站的其他非 CI 部分使用常规连接。

    【讨论】:

      【解决方案2】:

      host 应该只是 MAMP 上的 localhost,或者至少它在我的 MAMP 设置中。

      【讨论】:

        【解决方案3】:
        $db['default']['hostname'] = "localhost:8889";
        

        mysql使用的是8889端口吗?

        【讨论】: