我用mysql存取二进制数据,当长度小于3k时,不会出现任何错误,当长度大于3k时,存取总是不成功,请问有什么解决方法?这是什么问题?

解决方案 »

  1.   

    表中字段的数据类型是什么?理论上 VARBINARY 可以支持到 65,532 个字节。
    一般选择是用 BLOB / TEXT ,可以支持到 2^16
    而 LONGBLOB / LONGTEXT 可以到2^32另外可能还有你的程序中有没有什么限制?
      

  2.   

    我用的LONGBLOB,超过3k的数据就会更新不成功
      

  3.   

    case emFieldType::emArris:
    data = EsTransferBlobData(&m_obFaultArrisData);
    query << "update FAULT_FACE_INFO set faultArrisVersion ="
    << m_nArrisVersion
    << _T(",faultArrisData =\"")
    << escape
    << data
    << _T("\" where faultFaceId =")
    << nFaultId;
    break;
      

  4.   

    但使用mysql_stmt_send_long_data()可以操作成功,我是不是有什么标志位或者什么没打开啊
      

  5.   

    你是用update语句? SQL语句是有长度限制的。用bin2hex把数据转一下,然后直接更新进去吧