2013-05-11 14 views
7

Próbuję napisać skrypt w CodeIgniter, który utworzy bazę danych, a następnie doda tabele do nowo utworzonej bazy danych wraz z różnymi polami do nowej tabeli.CodeIgniter & DBForge - Utwórz bazę danych i tabele

Do tej pory mam dbforge, aby utworzyć nową bazę danych, ale ponieważ używam biblioteki bazy danych i wstępnie ustawiono wartości połączenia z bazą danych, kiedy tworzy ona tabelę, umieszcza ją we wstępnie wybranym baza danych, a nie ta, którą właśnie utworzyła.

W pliku konfiguracyjnym database.php Mam następujący:

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

Jeśli używam następujące polecenie, aby utworzyć nową bazę danych:

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

„db2” dostanie utworzony, ale potem poniższe polecenie umieszcza tabelę w "db1".

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

Potrzebuję "table1" utworzony w "db2". W jaki sposób mogę uzyskać CI, aby wybrał nowo utworzoną bazę danych ("db2"), aby utworzyć tabelę w odpowiednim miejscu, a następnie przełączyć się z powrotem do "db1"?

szukałem pod następującym pytaniem, które jest podobne do tego, co robię, ale nie chcę, aby umieścić wszelkie kolejne próby połączenia w database.php

Codeigniter showing error: No database selected

Każda pomoc docenione!

EDIT - Powinienem dodać, że CREATE_DATABASE może mieć dowolną nazwę dla nazwy bazy ... Jest to skrypt do automatycznego tworzenia bazy danych i odpowiednich tabel, gdy nazwa DB jest wyciągany z formy.

+0

jak umieścić $ this-> dbforge-> CREATE_DATABASE ('DB2') ;. Nie mam pomysłu, aby to zrobić. mogę wiedzieć? Umieściłem to w controllers/migrate.php w funkcji indeksu, ale zawsze dostaję błąd. dzięki. – akbarbin

Odpowiedz

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

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

jako bazy domyślnej w config jest metoda db1 create_table zawsze utworzyć tabelę w wybranej bazie danych, po utworzeniu bazy danych DB2 trzeba wybrać DB2, aby utworzyć tabelę w bazie danych można zrobić w następujący sposób

$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(); 

dla więcej informacji proszę sprawdzić instrukcji obsługi CI CI user Guide Connecting Database

+0

Zrobiłem to, ale dostałem błąd ... Niezdefiniowana właściwość: CI_DB_mysql_driver :: $ dbforge – pmgrace

0

change database connection of codeigniter migration

Użyłem sugestii zawartych w powyższej kwestii do rozwiązania mojego problemu. Po utworzeniu drugiej bazy danych użyłem następującego polecenia:

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

Umożliwia to tworzenie tabel w db2. Następnie użyj poniższego, aby przełączyć się z powrotem do domyślnej bazy danych:

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

Działa dokładnie tak, jak tego chcę.

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; 
    } 
    } 

} 
Powiązane problemy