gpt4 book ai didi

mysql - 确定 MySQL 行的存储要求

转载 作者:行者123 更新时间:2023-11-29 08:02:16 25 4
gpt4 key购买 nike

您好,我在网络应用程序上使用新表时遇到此错误:

Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

因此,我减少了某些 varchar 列的长度,以保持低于该值。

我想知道完整填充的行可以使用多少字节。

是否有一个命令可以知道:在连续达到 65535 之前还有多少字节可用?

最佳答案

下面的方法不完整,因为CASE仅涵盖我需要的那些类型(有关其他类型,请参阅here)。其他类型得到“8”,这通常是可以的,除非您有 CHARTEXTBLOB 列。 TEXTBLOB 各占 256 个字节。

欢迎大家贡献:-)

SELECT COLUMN_NAME, COLUMN_TYPE,
CASE SUBSTRING_INDEX(COLUMN_TYPE,'(',1)
WHEN 'decimal' THEN FLOOR((NUMERIC_PRECISION+8)/9)*4
WHEN 'integer' THEN 4
WHEN 'varchar' THEN CHARACTER_OCTET_LENGTH
WHEN 'bits' THEN FLOOR((NUMERIC_PRECISION+7)/8)
WHEN 'float' THEN 8
ELSE 4
END AS size
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='<the name of your database>'
AND TABLE_NAME='<the name of your table>';

所以:

SELECT SUM(size) FROM (
SELECT COLUMN_NAME, COLUMN_TYPE,
CASE
...
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='<the name of your database>'
AND TABLE_NAME='<the name of your table>'
) AS result;

关于mysql - 确定 MySQL 行的存储要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com