7

データベースを作成し、その新しく作成されたデータベースにテーブルを追加し、さまざまなフィールドを新しいテーブルに追加するスクリプトを CodeIgniter で作成しようとしています。

これまでのところ、新しいデータベースを作成するために dbforge を使用していますが、データベース ライブラリを使用していて、データベース接続の値が事前に設定されているため、テーブルを作成するときに、テーブルではなく、事前に選択されたデータベースに配置されます。作成したばかりのもの。

database.php 構成ファイルには、次のものがあります。

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

次のコマンドを使用して新しいデータベースを作成するとします。

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

「db2」は作成されますが、次のコマンドはテーブルを「db1」に配置します。

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

「db2」で作成された「table1」が必要です。CI で新しく作成されたデータベース ('db2') を選択して正しい場所にテーブルを作成し、'db1' に戻すにはどうすればよいですか?

私がやっていることと似ている次の質問を見てきましたが、database.php にさらに接続エントリを追加する必要はありません。

Codeigniter 表示エラー:データベースが選択されていません

どんな助けでも大歓迎です!

編集- create_database にはデータベース名に任意の名前を付けることができることを追加する必要があります...これは、データベースと、DB 名がフォームから取得される関連テーブルを自動的に作成するスクリプトです。

4

6 に答える 6

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

$this->db->query('use DB1');
于 2013-05-12T14:16:04.350 に答える
0

codeigniter 移行のデータベース接続を変更する

上記の質問で提供された提案を使用して、問題を解決しました。2 番目のデータベースを作成した後、次のコマンドを使用してそのデータベースに切り替えました。

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

これにより、db2 でテーブルを作成できます。次に、次を使用してデフォルトのデータベースに切り替えました。

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

私が望むように正確に動作します。

于 2013-05-12T14:05:39.793 に答える
0

config のデフォルト データベースは db1 であるため、create_table メソッドは常に選択したデータベースにテーブルを作成します。db2 を作成した後、db2 を選択してそのデータベースにテーブルを作成する必要があります。

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

詳細については、CI ユーザー ガイドを参照してください。 CI ユーザー ガイドデータベースの接続

于 2013-05-12T05:32:59.907 に答える