【发布时间】:2020-02-10 13:47:16
【问题描述】:
假设我有一个包含 5 个字段的数据库表。
id bigint(20)
name varchar(255)
place varchar(255)
DOB date
about TEXT
MySQL 中的最大行大小为 65535 字节,在表中的所有列之间共享,除了 TEXT/BLOB 列。
我需要一个查询,该查询将为我提供此表的最大行大小(以字节为单位),以便我可以检查最大大小是否超过 65535。使用的字符集是 utf8mb4。我需要这样的东西
(20*8 + 255*4 + 255*4 + 3) = 2203
about 字段的大小被忽略,因为类型是 TEXT。
【问题讨论】:
-
您可以查询
INFORMATION_SCHEMA.COLUMNS。使用DATA_TYPE和CHARACTER_MAXIMUM_LENGTH列。 -
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
我不认为有任何内置的东西会返回数据类型的大小。您可以使用
CASE表达式或创建您自己的将类型名称映射到大小的表。 -
20*8 BIGINT(20) 不是 20 个 BIGINT... :)
-
@Akina 你说得对,谢谢
标签: mysql byte size row utf8mb4