Oracle11g Cakephp2.x如何连接Oracle 11g?

Oracle11g Cakephp2.x如何连接Oracle 11g?,oracle11g,cakephp-2.0,Oracle11g,Cakephp 2.0,我无法将oracle与cakephp2连接起来,经过几个小时的搜索,我发现并一步一步地跟踪,仍然没有成功,我的oracle 11g 错误: ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务 首先,ORA错误是ORA-12514的排列:TNS侦听器无法解决服务名称错误,如下所示。ORA-1251错误的这种形式通常发生在数据库或侦听器进程处于启动的中间时,或者当数据库(Mysid在您的情况下)未被注册到侦听器时。p> 根>oerr ora 12514 ORA-12514:TNS:侦

我无法将oracle与cakephp2连接起来,经过几个小时的搜索,我发现并一步一步地跟踪,仍然没有成功,我的oracle 11g

错误:

ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务


首先,ORA错误是ORA-12514的排列:TNS侦听器无法解决服务名称错误,如下所示。ORA-1251错误的这种形式通常发生在数据库或侦听器进程处于启动的中间时,或者当数据库(Mysid在您的情况下)未被注册到侦听器时。p> 根>oerr ora 12514

ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务

原因:

  • 侦听器收到一个请求,要求建立到 数据库或其他服务
  • 侦听器接收到的连接描述符指定了一个服务 服务(通常是数据库服务)的名称,该服务或没有 但是动态地向侦听器注册,或者 为侦听器静态配置
  • 这可能是一种临时情况,例如在侦听器 已启动,但数据库实例尚未注册到
    听众
行动:

  • 请稍等,然后尝试第二次连接
  • 通过检查侦听器当前已知的服务 正在执行:lsnrctl服务
  • 检查的连接描述符中的SERVICE_NAME参数 使用的网络服务名称指定侦听器已知的服务
如果使用了easy connect命名连接标识符,请检查指定的服务名称是否为侦听器已知的服务


在listener.log文件中检查事件

我发现了很多错误的解决方案,下面是我修复的: (请注意以下内容)

  • php版本5.4.+,P5.3.0(wamp服务器)出错
  • 带有覆盖函数的oracle php文件出错(方法不兼容)
  • 连接数据库配置时出错
  • 从您的表名中选择*时出错[不要使用SELECT*,这样会起作用]
  • 如何修复:

  • 如果仍然是php 5.3.0,则启用模块oci8
  • 用这个我已经修改过了
  • 在Cakephp Config database.php中使用

  • 谢谢,我刚刚找到了解决方案,oracle 11g需要使用连接字符串进行连接。尝试了此方法后,到目前为止,我在插入新记录时遇到了问题,不知何故,我的日期字段无法验证(抱怨为null,但它在请求参数中)。运气好吗?我只有测试选择相关的插入我还没有测试。您能更详细地介绍一下如何插入吗?Ok现在似乎工作正常,问题是没有显示SQL插入错误。必须记录查询字符串并查看插入错误是什么。
    public $dboracle = array(
            'datasource' => 'Database/Oracle',
            'driver' => 'oracle',
            'connect' => 'oci_connect',
            'persistent' => true,
            'host' => "your host database ip",
            'login' => 'db user name',
            'password' => 'db password',
            'database' => '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=you db ip )(PORT=1521))
                        (CONNECT_DATA=(SID= you sid)))',
            'prefix' => '',
            'schema' => 'schema_name'
    );