我从 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
{...}
带有文本的字段:
订单从 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 ");
无变化。
这是 ODBC 驱动程序尝试将 Unicode 数据移交给您的客户端变量时出现的问题。您可能希望设置CHAR_AS_UTF8 = true
连接选项以避免这种情况。请参阅SAP HANA 客户端接口编程参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句