将VARCHAR列的长度保持在某个较大的值以避免任何DB Upsert故障,这是一种好的做法吗



我们的生产数据库中有电子商务产品表,该表的图像url列为VARCHAR(200(。但有时图像url的大小会超过200,这会导致插入/更新失败。

为了避免这种情况,我可以将VARCHAR的长度保持在1000或2000这样的大值吗?。这样做会不会影响我的查询性能?

此外,我在我的应用程序中使用Hibernate连接到Mariadb

因这些错误而失败

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement

Caused by: java.sql.SQLException: Data too long for column 'url' at row 1

注意

  1. 数据库:Mariadb 10.4.2
  2. 引擎:InnoDb

只需制作列TEXT(最大64KB(,并希望永远不要超过这个值。

您将无法将该列包含在常规索引中。但是您可能应该考虑FULLTEXTMATCH进行搜索。

对于VARCHAR,由于各种原因,这里有几个截止点:40、191、255、767、3072,也许还有其他原因。取决于行格式、版本号、字符集等。这些数字中有些是字节,有些是字符。

CCD_ 5和CCD_;长度";字段加上数据所需的字节数。这不应该引起关注。

最新更新