MySQL:按列获取行大小

MySQL:按列获取行大小,mysql,size,row,Mysql,Size,Row,我尝试使用SQLyog将现有表中的一列从Varchar(5000)更改为Varchar(10000) 这导致了一个错误: 行大小太大。所用表类型的最大行大小,而不是 计算水滴数,是65535。这包括存储开销,请检查 手册您必须将某些列更改为文本或blob 我从这个论坛了解到,我需要将这个较大的Varchar字段更改为文本-我假设它存储在Innodb中的表的“外部”-但我希望看到表中所有列的列表以及它们使用的大小 是否有人可以建议执行此操作的查询等?要查看表中所有列的列表及其使用的大小,可以运行:

我尝试使用SQLyog将现有表中的一列从
Varchar(5000)
更改为
Varchar(10000)

这导致了一个错误:

行大小太大。所用表类型的最大行大小,而不是 计算水滴数,是65535。这包括存储开销,请检查 手册您必须将某些列更改为文本或blob

我从这个论坛了解到,我需要将这个较大的
Varchar
字段更改为文本-我假设它存储在
Innodb
中的表的“外部”-但我希望看到表中所有列的列表以及它们使用的大小


是否有人可以建议执行此操作的查询等?

要查看表中所有列的列表及其使用的大小,可以运行:

describe my_table;
或查看CREATETABLE语句:

show create table my_table;

查看schema.COLUMNS表中的信息,它有很多这样的细节

这是一个查询,用于获取任何表的varchar列及其长度-

SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH
FROM information_schema.COLUMNS AS ins
WHERE ins.TABLE_NAME = '<your table name>' AND ins.DATA_TYPE = 'varchar'
选择列名称、字符最大长度
从信息_schema.COLUMNS作为ins
其中ins.TABLE_NAME=''和ins.DATA_TYPE='varchar'

我不明白描述中显示的尺寸。varchar(5000)列显示“13B”,这与varchar(2000)列相同?如果您想要对数据类型为varchar的所有列进行汇总,可以尝试此操作:
选择表模式、数据类型、计数(列名称)作为列计数、和(字符最大长度)从information_schema.columns,其中DATA_TYPE='VARCHAR'和table_schema=database()按table_schema分组