【问题标题】:500 error when select clob field in oracle 11g在 oracle 11g 中选择 clob 字段时出现 500 错误
【发布时间】:2016-09-09 06:11:48
【问题描述】:

当我运行我的 oracle 查询时,服务器中显示 500 错误。在oracle查询中选择clob字段时显示的错误。该字段包含大json数据

错误是:

HTTP 错误 500.0 - 内部服务器错误 C:\php7.0.3\php-cgi.exe - FastCGI 进程意外退出

这是我的查询:

SELECT knowyour.*,
  kp.personal_details AS personal_details,
  kp.fullname,
  kcd.category,
  kcd.ID AS kycID
FROM
  (SELECT DISTINCT kc.kyc_reffer_id,
    kc.ID,
    kc.customer_id,
    kc.json_details AS json_details,
    kc.customer_joint_id,
    kc.customer_id AS kycCustomer_id
  FROM db.knwcustomer kc
  ) knowyour
INNER JOIN db.createdetails kcd
ON (knowyour.customer_id=kcd.customer_id)
INNER JOIN db.personaldetails kp
ON (knowyour.kyc_reffer_id=kp.kyc_reffer_id)
LEFT JOIN db.kaccountdetails kd
ON (knowyour.customer_id=kd.customer_id)

WHERE kcd.displayStatus!=:status
AND kcd.category=:category
AND kd.status!=:status
AND kp.status!=:status
AND kcd.client_id=:client_id
ORDER BY kcd.ID

这里状态 = -1

(在 php pdo 中运行的查询)

这是一个示例查询。

personal_details 和 json_details 是 clob 字段。选择 clob 字段时,Distinct 将不起作用,这就是我使用此查询方法的原因。

这是代码问题还是服务器问题?但是这段代码在我的本地 wamp 服务器而不是在线服务器中运行良好。

我需要帮助!

【问题讨论】:

  • 检查 PHP 错误日志。它应该显示根本原因。
  • php 错误日志什么也没显示... :(
  • "这是代码问题还是服务器问题?"。您需要通过调试来确定。希望您可以访问适当的调试器,例如xdebug。否则你需要使用var_dump() 和exit 来检查你的代码的每一行并找出问题所在。
  • 我用 var_dump 检查了我的每一行代码,然后退出。我发现当我从 select 中删除 clob 字段时,它将起作用,否则会出现 500 http 错误。 @timclutton
  • 你没有包含你的 PHP,所以我假设你已经正确地遵循了关于使用 LOBs...

标签: php oracle pdo oracle11g


【解决方案1】:

如果您使用带有 PDO 的 php,请尝试如下设置属性

$dbConnection->setAttribute(PDO::ATTR_STRINGIFY_FETCHES,TRUE);

这会将所有列转换为字符串,无论它们的原始类型如何,并且不包括 NULL 列,并且不会转换插入的数据。

通过设置它,即使从 oracle 获取,它的行为也与 mysql 相同。

【讨论】:

  • 现在 clob 字段像普通字段一样工作 :) .. Thanx shafeeq bhai :)
【解决方案2】:

您是否尝试过只从具体表中查询一个 clob 字段?

喜欢:

SELECT CLOB_FIELD 
FROM EX_TABLE;

如果这可行,则查询本身可能存在问题。您的查询非常复杂,足以隐藏一些问题。

【讨论】:

  • 是的,这也显示相同的 500 错误 :( "select json_details from db.kncustomer"
  • "select dbms_lob.substr(json_details,4000) from db.kncustomer" 只有这样才能工作.. 但我需要的所有数据不仅是 4000 char.. "select json_details from db.kncustomer" 正在工作在我的本地 wamp 服务器中而不是在线服务器中。这就是为什么我很困惑!
  • 嗯。这很奇怪。似乎服务器无法提供 clob。但它可以操纵它。好像是服务器问题。
猜你喜欢
  • 2016-10-13
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多