DIAG [S1000] [SAP AG] [LIBODBCHDB SO] [HDBODBC]一般错误; -10427将参数/列(8)从数据类型NVARCHAR转换为ASCII失败

时间:2017-11-20 12:27:28

标签: php odbc hana

我从PHP代码连接到BBDD HANA。连接器是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€a 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 ");

没有变化。

1 个答案:

答案 0 :(得分:0)

当ODBC驱动程序尝试将Unicode数据移交给客户端变量时,会出现此问题。 您可能希望设置CHAR_AS_UTF8 = true连接选项以避免这种情况。 请参阅SAP HANA Client Interface Programming Reference