私はサーバーを制御しないのでPHP 5.3.3を使用しています。 CodeIgniter 3.1.0も使用しています。私は、Oracleサーバー、Oracle 11gリリース11.2.0.4.0に接続するためにCIを使用しようとしています。Codeigniterデータベースのヘルプ? PHP connect works
私はPHPのoracle_connectを使用してうまく接続できます
$connect_string = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID)))";
$oconnect = oci_connect(USERNAME, PASSWORD, $connect_string);
$query = "select * from DB.TABLE";
$stid=oci_parse($oconnect, $query);
$r = oci_execute($stid);
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {
print_r($row);
}
しかし、私はCodeIgniterの内からDB接続を設定しようとすると、私はTNS名が知られている、またはそれができるとされていないというエラーが出ます接続していないか、サービスが不明であることを示します。どのように私はそれを微調整するかによって異なります。
CodeIgniterの例が間違っている可能性があることに注意してください。 dsnはSID =を使用します(例ではSERVICE =です)。 PHPのoci_connectのためにSID =を示唆したというPHPマニュアルのユーザーのコメントを読むまではありませんでした。
は、ここで私はCodeIgniterのために持っているものだ:起こってすることができるかについて
$dsn_string = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID)))";
$db['default'] = array(
'dsn' => $dsn_string,
'hostname' => 'HOSTNAME',
'username' => 'USERNAME',
'password' => 'PASSWORD',
'database' => 'DB',
'dbdriver' => 'oci8',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
任意のアイデア?私は他にもいくつか試してみるつもりです。私はCIのdb接続を無視することができますが、主にフロントエンドのAPIプロバイダとして使用しているので、CIを使用している最大の理由はdbです。
ありがとうございます!
[要件](https://codeigniter.com/userguide3/general/requirements.html)が不足している可能性がありますか? – Tpojka
おそらく[EZCONNECT](http://www.orafaq.com/wiki/EZCONNECT)の構文を試してみてください: '$ dsn = 'hostname/mysid';' – timclutton