💢 OCI8: проблемы с переходом на PHP7
Ещё в копилку проблем с ПХП7: если при привязке переменных в Оракле (bind) поля типа LONG/LOB не находятся в конце списка, то вы получите ошибку
Ещё в копилку проблем с ПХП7: если при привязке переменных в Оракле (bind) поля типа LONG/LOB не находятся в конце списка, то вы получите ошибку
Комментарии 13
Доброго дня,
Можете привести пример запроса? Это выражение UPDATE или процедура/функция с входными параметрами (или и то и другое)?
В нашем случае это UPDATE или INSERT (не знаю точно), в SELECT пока не встретили.
http://docs.oracle.com/cd/E11882_01/appdev … LNOCI16372
A special consideration applies on the maximum size of bind variables that are neither LONG or LOB, but that appear after any LOB or LONG bind variable in the SQL statement. You receive an
Если у тебя varchar2(4000) и UTF, то
When a client connects to a multibyte database (AL32UTF8 for example) and the string , once converted to the multibyte database encoding becomes longer than 4000 BYTES Oracle transforms this internally into a LONG as the data is longer than the 4000 bytes max value for Varchar2.
OCI has a requirement that any LOB and LONG needs to be the last of the bind list, this includes that «real» LONG/LOB need to be the last and after any VARCHAR2 that is expanded to over 4000 BYTE due to the characterset conversion
1. Свежая тестовая база создана в уникоде, а предыдущая нет?
2. Предыдущий драйвер ставил OCI_ATTR_MAXDATA_SIZE?
База та же. Не я один заметил ошибку:
https://bugs.php.net/bug.php?id=72524
https://github.com/owncloud/core/issues/18363
Всё страньше и страньше…
Причем вопрос, с мое кочки зрения, не почему не работает в php7 (не должно работать), а как работало в php5? Единственное, что приходит в голову — ошибка в реализации ошибки :). Или наглая установка OCI_ATTR_MAXDATA_SIZE за что надо бить сапогами.
Но по php я совсем не специалист.
Кстати, в Oracle 12 ограничение осталось.
Для меня эта ситуация — баг. Годами нормально всё работало, всегда, во всех ситуациях, а тут
Не прошло и3-х месяцев, как запилили фикс, см. комментарии на https://bugs.php.net/bug.php?id=72524pull-request в master,
Как раз сегодня запулили
http://git.php.net/?p=php-src.git%26a=sear … %26s=72524
так что можно ожидать, что в версии 7.0.11 иликакой-то ближайшей это выкатят
Да, фикс видел, выйдет, протестирую.