我们的生产数据库中有电子商务产品表,该表的图像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
注意
- 数据库:Mariadb 10.4.2
- 引擎:InnoDb
只需制作列TEXT
(最大64KB(,并希望永远不要超过这个值。
您将无法将该列包含在常规索引中。但是您可能应该考虑FULLTEXT
和MATCH
进行搜索。
对于VARCHAR
,由于各种原因,这里有几个截止点:40、191、255、767、3072,也许还有其他原因。取决于行格式、版本号、字符集等。这些数字中有些是字节,有些是字符。
CCD_ 5和CCD_;长度";字段加上数据所需的字节数。这不应该引起关注。