【问题标题】:Connect Codeigniter to Oracle 11g将 Codeigniter 连接到 Oracle 11g
【发布时间】:2015-10-16 08:04:30
【问题描述】:

请帮忙!我无法将 codeigniter 连接到 Oracle 我正在尝试将 Codeigniter 连接到 Oracle 11g,这是我的设置

Settings in database.php:

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = "//localhost/";
$db['default']['username'] = 'xxxxxxx';
$db['default']['password'] = 'xxxxxxx';
$db['default']['database'] = 'orcl';
$db['default']['dbdriver'] = 'oci8';
$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;

注意:我将 C:\instantclient_11_2 添加到环境变量到 PATH。

oracle port number:
oracle hostname: Home-pc
database name: orcl

仅当我运行 CodeIgniter 登录代码时,它才会显示此错误消息:

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: D:\xampp\htdocs\ci\system\database\DB_driver.php

Line Number: 124

但是当我运行一个简单的 php 代码时,我可以连接到 Oracle:

<?php
$conn = oci_connect("xxxxxx", "xxxxxx","");
if (!$conn) { 
   echo "Not connected!";
}
else
  echo "yahooooooooo!!!!!!!!!!";
?>

结果: 啊啊啊啊啊!!!!!!!!!

【问题讨论】:

  • 您是否尝试过将主机名保留为localhost 即。没有斜线?

标签: codeigniter oracle11g connect


【解决方案1】:

在您的配置的 database.php 中进行以下更改

$active_group = 'default';
$active_record = TRUE;

$tnsname = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))';

$db['default']['hostname'] = $tnsname;
$db['default']['username'] = 'XXXXXX';
$db['default']['password'] = 'XXXXX';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'oci8';
$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;

【讨论】:

  • 感谢 Prakash,实际上这可能有效。我通过卸载 oracle 完整版并将其替换为 express 版本解决了这个问题。它使用相同的设置
【解决方案2】:

默认更改为XE

$active_group = 'XE';
$active_record = TRUE;

$tnsname = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))';

$db['XE']['hostname'] = $tnsname;
$db['XE']['username'] = 'XXXXXX';
$db['XE']['password'] = 'XXXXX';
$db['XE']['database'] = '';
$db['XE']['dbdriver'] = 'oci8';
$db['XE']['dbprefix'] = '';
$db['XE']['pconnect'] = TRUE;
$db['XE']['db_debug'] = TRUE;
$db['XE']['cache_on'] = FALSE;
$db['XE']['cachedir'] = '';
$db['XE']['char_set'] = 'utf8';
$db['XE']['dbcollat'] = 'utf8_general_ci';
$db['XE']['swap_pre'] = '';
$db['XE']['autoinit'] = TRUE;
$db['XE']['stricton'] = FALSE;

【讨论】:

    【解决方案3】:

    尝试进行此更改 将主机名更改为http://localhost:1521:orcl 您的数据库名称为 orcl ,默认情况下 orcl 是默认实例 ID。 尝试创建新用户或数据库并将其更改为配置database

    【讨论】:

    • 感谢 Abin,这可能是一个很好的解决方案,但很抱歉我没有机会尝试。我卸载了我正在使用的 Oracle 完整版并将其替换为快速版本,它适用于我的设置
    【解决方案4】:

    确保php_oci8_11g.dll 扩展已加载到php.ini

    【讨论】:

    • 是的,扩展已加载。
    猜你喜欢
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2012-11-09
    • 2012-10-10
    • 1970-01-01
    相关资源
    最近更新 更多