You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SuSE下通过unixODBC在Lotus Notes代理读写MariaDB LONGTEXT报错咨询

解决方案

根因说明

该报错由LotusScript LS:DO组件对大文本类型的默认处理限制,与SuSE Linux环境下MariaDB ODBC驱动的大字段传输配置不匹配导致:select *加载LONGTEXT列时,LS:DO默认的GetValue方法不支持直接读取超过长度限制的大文本,就会抛出"LS:DO- The result contains no data"错误。

修复步骤

  • 第一步:调整ODBC与MariaDB服务端配置

    在SuSE Linux的ODBC配置文件(全局路径/etc/odbc.ini、用户级路径~/.odbc.ini)中,对应你的MariaDB数据源节点添加以下参数:
    NO_CACHE=1
    MAX_ALLOWED_PACKET=64M
    
    同时修改MariaDB服务端配置/etc/my.cnf.d/mariadb-server.cnf,确保max_allowed_packet参数值不小于ODBC端配置,避免大文本传输时被截断。修改后重启MariaDB服务生效。
  • 第二步:修改LotusScript大字段读取逻辑

    不要直接调用GetValue读取LONGTEXT类型字段,改用LS:DO提供的GetChunk分块读取方法,示例代码如下:
    Dim chunkSize As Long, longTextContent As String, chunk As String
    chunkSize = 32767 ' 可根据实际场景调整,不超过LotusScript单字符串最大长度限制即可
    ' 定位到结果集行后执行以下逻辑
    Do
        chunk = result.GetChunk("你的LONGTEXT字段名", chunkSize)
        If Len(chunk) = 0 Then Exit Do
        longTextContent = longTextContent & chunk
    Loop
    ' 后续直接使用拼接完成的longTextContent即可
    
    如果你需要写入LONGTEXT字段,对应使用AppendChunk方法拼接大文本后写入即可。
  • 第三步:优化SQL与结果集配置

    1. 避免使用select *写法,显式指定所有需要查询的字段,包括LONGTEXT类型字段
    2. 初始化ODBCResultSet时关闭缓存限制,示例代码:
    Dim con As New ODBCConnection
    Dim qry As New ODBCQuery
    Dim result As New ODBCResultSet
    Call con.ConnectTo("你的ODBC数据源名称", "数据库账号", "数据库密码")
    Set qry.Connection = con
    qry.SQL = "select id, ticket_title, ticket_content /* ticket_content为LONGTEXT字段 */ from ticket where ..."
    Set result.Query = qry
    result.CacheLimit = 0 ' 关闭结果集缓存限制,适配大字段读取
    Call result.Execute()
    

验证方法

所有配置修改完成后,重启Domino服务释放旧的ODBC连接池,先测试读取短内容的LONGTEXT字段,再逐步测试最大长度的字段内容,确认无报错即可。

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:54:03