我从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 ");
没有变化。
答案 0 :(得分:0)
当ODBC驱动程序尝试将Unicode数据移交给客户端变量时,会出现此问题。
您可能希望设置CHAR_AS_UTF8 = true
连接选项以避免这种情况。
请参阅SAP HANA Client Interface Programming Reference。