我正在尝试创建一个名为“ brand_slug”的类型为VARCHAR(20),可为空,归类为“ utf8mb4_unicode_ci”的列,并且出现错误:
SQL错误:行大小太大。所用表格的最大行大小 不计BLOB的类型是65535。
奇怪的是,对于某些VARCHAR列,它使我最多可以将其设置为255,而对于其他VARCHAR列,则只能将其设置为50或75,在这种情况下甚至不能使用表。所有这些都发生在同一张表中。
我正在使用InnoDB引擎。
答案 0 :(得分:0)
InnoDB表的解决方案通常是更改行格式:
ALTER TABLE mytable ROW_FORMAT=DYNAMIC;
行大小仍然有一个有限的限制,但是将能够在行中容纳更多的VARCHAR / BLOB / TEXT列。
在执行此操作之前,必须有效以下MySQL选项:
innodb_file_format = Barracuda
innodb_file_per_table = ON
有关更多信息,请阅读文档:
答案 1 :(得分:0)
我怀疑(没有看到SHOW CREATE TABLE
)您编写模式的风格具有以下大多数缺陷:
(255)
;使用合理的限制。