DIAG [S1000] [SAP AG] [LIBODBCHDB SO] [HDBODBC] Общая ошибка; -10427 Преобразование параметра / столбца (8) из типа данных NVARCHAR в ASCII завершилось неудачно

Я подключаюсь к BBDD HANA из кода PHP. Разъем unixodbc. (таблица содержит испанские символы)

При попытке выбрать записи, если в каком-либо поле есть специальные символы (например, символ евро), они пропускают выборку и входят в odbc:

DIAG [S1000] [SAP AG] [LIBODBCHDB SO] [HDBODBC] Общая ошибка; -10427 Преобразование параметра / столбца (8) из типа данных NVARCHAR в ASCII завершилось неудачно

Конфиг odbc.ini

[hanadb]
Driver = /usr/sap/hdbclient/libodbcHDB.so
ServerNode = 172.17.xx.xx:31015

(я пытаюсь добавить эту строку, без каких-либо изменений)

DriverUnicodeType=1
DriverManagerEncoding = UTF-8
Locale = es_ES
characterset=UTF8
IANAAPPCODEPAGE=2026

Код в php

$result = odbc_exec($link,"SELECT * FROM ZIF_TCONDW ");

while($datos=odbc_fetch_array($result)) {
$query=sprintf("INSERT INTO condiciones values
{...}

поля с текстом:

Pedidos de 701 € 1200 €

Сбой и в файле трассировки:

DIAG [S1000] [SAP AG] [LIBODBCHDB SO] [HDBODBC] Общая ошибка; -10427 Преобразование параметра / столбца (8) из типа данных NVARCHAR в ASCII завершилось неудачно

Я тоже пытаюсь конвертировать тип в выделенном предложении

$result = odbc_exec($link,"SELECT LIFNR,ZONA,POSCOND,LEFT(STRTOBIN(CONCEPTO,'UTF-8') ,400) AS CONCEPTO, CONDICION ,ORDEN,AEDAT,AEUHR,AENAM FROM ZIF_TCONDW ");

или же

$result = odbc_exec($link,"SELECT LIFNR,ZONA,POSCOND,base64_encode(CONCEPTO) AS CONCEPTO, base64_encode(CONDICION) AS CONDICION ,ORDEN,AEDAT,AEUHR,AENAM FROM ZIF_TCONDW ");

Без изменений.

0

Решение

Эта проблема возникает, когда драйвер ODBC пытается передать данные Unicode вашим клиентским переменным.
Вы можете установить CHAR_AS_UTF8 = true вариант подключения, чтобы избежать этого.
Увидеть Справочник по программированию клиентского интерфейса SAP HANA.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]