我有一个Debian服务器来运行我的CodeIgniter项目。我使用MySQL作为我的数据库。
现在,我需要连接外部数据库。但这不是一个MySQL服务器,它是一个SQL Server。
我试过了:
$db['external']['hostname'] = 'tcp:[nameserver],[port]';
$db['external']['username'] = '[username]';
$db['external']['password'] = '[password]';
$db['external']['database'] = '[dataBaseName]';
$db['external']['dbdriver'] = 'mssql';
$db['external']['dbprefix'] = '';
$db['external']['pconnect'] = FALSE;
$db['external']['db_debug'] = TRUE;
$db['external']['cache_on'] = FALSE;
$db['external']['cachedir'] = '';
$db['external']['char_set'] = 'utf8';
$db['external']['dbcollat'] = 'utf8_general_ci';
$db['external']['swap_pre'] = '';
$db['external']['autoinit'] = TRUE;
$db['external']['stricton'] = FALSE;
我的测试文件就是这样:
$DB2 = $this->load->database('external', TRUE);
$rs = $DB2->query("SELECT * FROM table");
$ret = $rs->result_array();
var_dump($ret);
外部公司可以正确连接,因此凭据可以。
当我使用$db['external']['dbdriver'] = 'sqlsrv'
时,输出为
致命错误:调用未定义的函数sqlsrv_connect()
我该如何解决这个问题?
答案 0 :(得分:0)
SQLSRV扩展可以在以下操作系统上使用:
- Windows Vista Service Pack 2或更高版本
- Windows Server 2008 Service Pack 2或更高版本
- Windows Server 2008 R2
- Windows 7
您的Debian服务器将无法使用sqlsrv_
个功能。
如果需要从Linux连接到SQL Server,可以使用the PDO_DBLIB
library。在CodeIgniter中,您看起来需要set the DSN manually:
某些数据库驱动程序(如PDO,PostgreSQL,Oracle,ODBC)可能需要提供完整的DSN字符串。如果是这种情况,您应该使用'dsn'配置设置,就好像您正在使用驱动程序的底层本机PHP扩展
您必须在连接字符串中使用PDO_DBLIB
DSN,该字符串可能以sybase:
,mssql:
或dblib:
开头(取决于PHP的编译方式) 。看起来Debian软件包可能use the sybase:
prefix。
答案 1 :(得分:-1)
试试这个$ rs = $ this-> DB2->查询(“SELECT * FROM table”);