Крейт
Новичок
Поддержка CLOB в PDO: есть или не есть?
Доброго времени суток, коллеги.
Столкнулся с проблемой невозможности добавления данных в поля типа CLOB, используя библиотеку pdo_oci.
Более подробно проблема описана здесь, здесь и здесь (вторая сверху запись). Моя ситуация абсолютно аналогична тем, что приведены по ссылкам выше. Создаю запрос, делаю привязку переменных к CLOB-полю данных с использованием PDO:
ARAM_LOB, при запуске запроса на выполнение появляется ошибка "ORA-00932: inconsistent datatypes: expected BLOB got CLOB".
Все это возникло на конфигурации Apache 2.0.59 (win32), php 5.2.5, Oracle 10g. И еще аналогичная конфигурация под никсами, только версия php - 5.2.3
Вопрос: как с этим бороться? Существуют ли какие-то обходные пути без внесения изменений в исходный код pdo-библиотеки? Будет ли этот баг исправлен в ближайшее время?
Сижу уже второй день в гугле, внимательно изучаю документацию, но пока решения не нашел. Очень не хотелось бы из-за этого отказываться от использования PDO в проекте.
Чтобы не быть голословным:
Доброго времени суток, коллеги.
Столкнулся с проблемой невозможности добавления данных в поля типа CLOB, используя библиотеку pdo_oci.
Более подробно проблема описана здесь, здесь и здесь (вторая сверху запись). Моя ситуация абсолютно аналогична тем, что приведены по ссылкам выше. Создаю запрос, делаю привязку переменных к CLOB-полю данных с использованием PDO:

Все это возникло на конфигурации Apache 2.0.59 (win32), php 5.2.5, Oracle 10g. И еще аналогичная конфигурация под никсами, только версия php - 5.2.3
Вопрос: как с этим бороться? Существуют ли какие-то обходные пути без внесения изменений в исходный код pdo-библиотеки? Будет ли этот баг исправлен в ближайшее время?
Сижу уже второй день в гугле, внимательно изучаю документацию, но пока решения не нашел. Очень не хотелось бы из-за этого отказываться от использования PDO в проекте.
Чтобы не быть голословным:
PHP:
$db = new PDO("oci:dbname=orcl", "login", "password");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("insert into clobtest (clob_field) " .
. "VALUES (EMPTY_CLOB()) RETURNING clob_field INTO ?");
$data = "enormous amount of character data";
$stmt->bindParam(1, $data, PDO::PARAM_LOB);
$db->beginTransaction();
try {
$stmt->execute();
} catch (Exception $e) {
die($e->getMessage());
}
$db->commit();