2013-05-11 12 views
7

Ich versuche, ein Skript in CodeIgniter zu schreiben, das eine Datenbank erstellt und dann Tabellen zu dieser neu erstellten Datenbank zusammen mit verschiedenen Feldern in der neuen Tabelle hinzufügt.CodeIgniter & DBForge - Datenbank und Tabellen erstellen

Bis jetzt habe ich dbforge die neue Datenbank zu erstellen, aber da ich die Datenbank-Bibliothek verwenden und voreingestellte Datenbankverbindungswerte haben, wenn es eine Tabelle erstellen erstellt, wird es in die Vorauswahl gestellt Datenbank und nicht die gerade erstellte.

In der database.php Config-Datei die folgende Ich habe:

$db['default']['database'] = 'db1'; 

Wenn ich den folgenden Befehl verwenden, um eine neue Datenbank zu erstellen:

$this->dbforge->create_database('db2'); 

'db2', aber dann erstellt wird erhalten Der folgende Befehl setzt die Tabelle in 'db1'.

$this->dbforge->create_table('table1'); 

Ich brauche 'Tabelle1' in 'db2' erstellt wurde. Wie erhalte ich CI, um die neu erstellte Datenbank ('db2') auszuwählen, um die Tabelle an der richtigen Stelle zu erstellen, und dann zurück zu 'db1' zu wechseln?

Ich habe an die folgende Frage sah, die ähnlich ist, was ich tue, aber ich möchte keine weiteren Verbindungseinträge in der database.php zu setzen haben

Codeigniter showing error: No database selected

Jede Hilfe geschätzt!

BEARBEITEN - Ich sollte hinzufügen, dass die create_database einen beliebigen Namen für den Datenbanknamen haben könnte ... Dies ist ein Skript zum automatischen Erstellen einer Datenbank und der relevanten Tabellen, wo der DB-Name aus einem Formular abgerufen wird.

+0

wie $ setzen this-> dbforge-> CREATE_DATABASE ('db2') ;. Ich habe keine Idee, das zu tun. kann ich wissen? Ich habe das in controllers/migrate.php in index-Funktion eingefügt, aber ich bekomme immer einen Fehler. Vielen Dank. – akbarbin

Antwort

6
$this->db->query('use db2'); 

$this->db->query('use DB1'); 
0

als Standard-Datenbank in config db1 create_table Methode Tabelle immer in ausgewählter Datenbank erstellen wird, nach db2 Erstellen Sie benötigen db2 wählen Tabelle in der Datenbank erstellen Sie in folgenden Weise

$config['hostname'] = "localhost"; 
    $config['username'] = "myusername"; 
    $config['password'] = "mypassword"; 
    $config['database'] = "db2"; 
    $config['dbdriver'] = "mysql"; 
    $config['dbprefix'] = ""; 
    $config['pconnect'] = FALSE; 
    $config['db_debug'] = TRUE; 
    $config['cache_on'] = FALSE; 
    $config['cachedir'] = ""; 
    $config['char_set'] = "utf8"; 
    $config['dbcollat'] = "utf8_general_ci"; 

    $db2 = $this->load->database($config,TRUE); 
    $db2->dbforge->create_table('table1'); 

    //if you want to close connection 
    $db2->db->close(); 

für tun können weitere Informationen erhalten Sie unter Anleitung CI Benutzer CI user Guide Connecting Database

+0

Ich habe das getan, aber ich bekomme den Fehler ... Undefinierte Eigenschaft: CI_DB_mysql_driver :: $ dbforge – pmgrace

0

change database connection of codeigniter migration

ich den Vorschlag in der obigen Frage bereitgestellt benutzt habe mein Problem zu lösen. Nachdem ich die zweite Datenbank zu erstellen verwendete ich den folgenden Befehl ein, um es zu wechseln:

$this->db->query('use db2'); 

Auf diese Weise können Sie mir die Tabellen in db2 erstellen. Verwenden Sie dann Folgendes, um zurück zur Standarddatenbank zu wechseln:

Funktioniert genau, wie ich es will.

1
if ($this->dbforge->create_database('my_db_test')) 
{ 
    try{ 
     $current_database = "my_db_test"; 
     $this->db->database = $current_database; 
    $this->db->close(); 
    $config['hostname'] = "localhost"; 
    $config['username'] = "root"; 
    $config['password'] = ""; 
    $config['database'] = $current_database; 
    $config['dbdriver'] = "mysql"; 
    $config['dbprefix'] = ""; 
    $config['pconnect'] = FALSE; 
    $config['db_debug'] = TRUE; 
    $config['cache_on'] = FALSE; 
    $config['cachedir'] = ""; 
    $config['char_set'] = "utf8"; 
    $config['dbcollat'] = "utf8_general_ci"; 
    $this->load->database($config); 
    $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('ipn_log', TRUE); 
    }catch(Exception $e){ 
    echo $e->getMessage();die; 
    } 
    } 

} 
Verwandte Themen