Question

I am using Codeigniter's DBForge class to create a database and table within that database.

Here is code:

if ($this->dbforge->create_database('new_db')) {
     $fields = array(
         'blog_id' => array(
              'type' => 'INT',
              'constraint' => 5,
              'unsigned' => TRUE,
              'auto_increment' => TRUE
          ),
          'blog_title' => array(
              'type' => 'VARCHAR',
              'constraint' => '100',
          ),
          'blog_author' => array(
              'type' => 'VARCHAR',
              'constraint' => '100',
              'default' => 'King of Town',
          ),
          'blog_description' => array(
              'type' => 'TEXT',
              'null' => TRUE,
          ),
     );
     $this->dbforge->add_field($fields);
     $this->dbforge->add_key('blog_id', TRUE);
     $this->dbforge->create_table('blog', TRUE);
}

The above mentioned code is written inside index function of controller. When the following code is executed, it shows error as, No database selected. Does anyone have ant idea why it is happening. Any help is appreciated.

Was it helpful?

Solution

You need to specify

 $db['default']['database'] = "new_db"; 

in database.php

OTHER TIPS

Just refer to database.php file inside application/config folder. Make sure you have proper values for database name and other things in the following lines present in database.php file

$db['default'] = array(
'dsn'   => '',
'hostname' => 'localhost',
'username' => 'your username', //By default it is root
'password' => 'your password', //By default this field is empty
'database' => 'database name',//The error that you are getting is because of this only. Specify your database name here
'dbdriver' => 'mysqli',

Hope it helps

If you have set the default database in config/database.php and it is still not working, you probably should save the file in case you forget to do that.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top