2016-12-14 4 views
0

私はCodeIgniterプロジェクトを実行するDebianサーバを持っています。私は自分のデータベースとしてMySQLを使用しています。Codeigniterでlinuxの外部SQL Server(MSSQL)に接続

今、私は外部データベースに接続する必要があります。しかし、これは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); 

私は、ファイルのテストを実行すると、出力は次のようになります。

外部の会社が接続することができます正しく、資格情報はOKです。

私は$db['external']['dbdriver'] = 'sqlsrv'を使用すると、出力が

Fatal error: Call to undefined function sqlsrv_connect()

どのように私はこの問題を解決することができますか?

+0

私は同じ問題を抱えており、これを行う方法を探したいと思います。私は既にAdminerを使って同じマシンからmssqlに接続することができます。問題はCodeigniterでそれを行う方法を理解することです。 – marquito

+0

あなたと同じエラーはありません。どうやら私はデータベースに接続することができますが、 "Unable to connect ..."エラーが表示されないので、クエリは空に戻ります。不思議に思う。 – marquito

答えて

-1

この$ rs = $ this-> DB2-> query( "SELECT * FROM table")を試してください。 the documentationから

+0

これは質問に答えないようです。これで、50の評価ポイントを獲得したので、説明を求めるためにコメントを使用することができます。回答セクションは、答えを提供するためだけに使用されるべきです。 – Chris

0

The SQLSRV extension can be used on the following operating systems:

  • Windows Vista Service Pack 2 or later
  • Windows Server 2008 Service Pack 2 or later
  • Windows Server 2008 R2
  • Windows 7

あなたのDebianサーバがsqlsrv_機能を使用することはできません。

LinuxからSQL Serverに接続する必要がある場合は、the PDO_DBLIB libraryを使用できます。 CodeIgniterのでは、それはあなたがset the DSN manuallyに必要な次のようになります。

Some database drivers (such as PDO, PostgreSQL, Oracle, ODBC) might require a full DSN string to be provided. If that is the case, you should use the ‘dsn’ configuration setting, as if you’re using the driver’s underlying native PHP extension

あなたはsybase:mssql:、またはdblib:で始まる可能性がある、あなたの接続文字列でPDO_DBLIB DSNを使用する必要があります(PHPがコンパイルされた方法によって異なります)。 Debianパッケージはuse the sybase: prefixのように見えます。

関連する問題