我能够连接到我的linux机箱上的用户DSN(使用ODBC)。
如何使用代码点火器进行连接?
在我的database.php中我有默认数据库:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'user';
$db['default']['password'] = 'pass';
$db['default']['database'] = 'db_main';
$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';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
但是我还需要使用ODBC同时连接到另一个数据库:
所以我在我的控制器中:
public function index()
{
$dsn = 'NZSQL://someuser:password@host/somedatabase';
$this->load->database($dsn);
$this->db->query("SELECT * FROM Cust Limit 10");
$result = $this->db->result();
}
我收到错误:
发生数据库错误
错误号码:1146
表'db_main.Cust'不存在
SELECT * FROM Cust Limit 10
文件名:/var/www/controllers/netezzatest.php
行号:28
答案 0 :(得分:3)
对于您要连接的每个数据库,Code Igniter将要求您构建新的数据库对象。您应该在配置文件中完全构建每个DB,然后在调用$ this-> load-> database()时按名称(数组键)引用它们。
有关具体信息,请参阅Connecting to Multiple Databases。但是,基本上,您需要使用它来连接(为每个DB创建一个对象):
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
然后在每个上运行查询:
$DB1->query();
$DB1->result();
和
$DB2->query();
$DB2->result();
答案 1 :(得分:1)
连接到第二个数据库时,需要让它返回对象,以便您可以使用它。将true
作为第二个参数传递给load->database
会返回一个db对象。
$dsn = 'NZSQL://someuser:password@host/somedatabase';
$dsnDB = $this->load->database($dsn, TRUE);
$query = $dsnDB->query("SELECT * FROM Cust Limit 10");
$result = $query>result();
在这种情况下,$this->db
是您的mysql数据库,$dsnDB
是另一个。