【问题标题】:How to cut a String to fit a TEXT field in MySQL如何剪切字符串以适合 MySQL 中的 TEXT 字段
【发布时间】:2013-04-22 15:13:06
【问题描述】:

我正在将字符串写入具有 TEXT 类型字段的数据库中。这意味着我可以将65,535 bytes 写入该字段。之后我会得到一个 SQL 异常:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'DETAILS' at row 1

所以我现在的问题是,如何检查我的字符串,然后如何在正确的位置剪切字符串,它仍然适合数据库。

我知道这也取决于编码。我刚刚看到 MySQL 架构使用“latin1 - 默认集合”字符集。

【问题讨论】:

标签: java mysql database


【解决方案1】:

我想我用这段代码得到了它:

public String cutStringForTEXT(String string) {
    String ENCODING = "ISO-8859-1";
    int FIELD_SIZE = 65535;
    try {
        byte[] bytes = string.getBytes(ENCODING);
        if (bytes.length >= FIELD_SIZE) {
            return new String(Arrays.copyOfRange(bytes, 0, FIELD_SIZE), ENCODING);
        }
    } catch (UnsupportedEncodingException ex) {
    }
    return string;
}

如果太长,则获取字节数组的子集并将其转换回字符串。

【讨论】:

    【解决方案2】:

    如果您正在使用 php 将值插入数据库中,您可以让 php 在将变量插入数据库之前检查变量的大小。如果变量太长,可以让它砍掉超出大小限制的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多