我想创建一个 325列的表:
CREATE TABLE NAMESCHEMA.NAMETABLE
(
ROW_ID TEXT NOT NULL , //this is the primary key
324 column of these types:
CHAR(1),
DATE,
DECIMAL(10,0),
DECIMAL(10,7),
TEXT,
LONG,
) ROW_FORMAT=COMPRESSED;
我用 TEXT 替换了所有的 VARCHAR,并在 MySQL 的 my.ini 文件中添加了 梭鱼,这是添加的属性:
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_file_format_check = ON
但我仍然有这个错误:
Error Code: 1118
Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
编辑: 我不能更改数据库的结构,因为它是遗留应用程序/系统/数据库。新表的创建是旧数据库的导出。
编辑2: 我写的这个问题和其他问题很相似,但是里面有一些我在网上找到的解决方案,比如 VARCHAR 和 Barracuda,但是我仍然有这个问题,所以我决定打开一个新的问题,里面已经有了经典的答案,看看是否有人有其他的答案