8126)"?-6ren"> 8126)"?-我正在将包含 314 列的 CSV 文件上传到 MariaDB 5.5 服务器。目前我的代码如下所示: CREATE TABLE table_name (column_1 TEXT, c-6ren">
gpt4 book ai didi

mysql - 如何使用 MariaDB 5.5 修复 "ERROR 1118 (42000): Row size too large (> 8126)"?

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

我正在将包含 314 列的 CSV 文件上传到 MariaDB 5.5 服务器。目前我的代码如下所示:

CREATE TABLE table_name
(column_1 TEXT,
column_2 TEXT,
...
column_314 TEXT)
ROW_FORMAT=DYNAMIC;
LOAD DATA LOCAL INFILE filepath  
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

这会导致以下错误:

ERROR 1118 (42000): 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.

我正在使用 Barracuda InnoDB 文件格式,并启用每个表文件:

innodb_file_format=Barracuda
innodb_file_per_table=1

我认为问题出在 innodb 页面大小,它设置为 16k。由于我使用的是 MariaDB 5.5 而不是 10.1+,我也不相信有办法增加页面大小。该数据库由组织管理,目前无法升级到较新的版本。

最佳答案

314 列“太多”。但是,由于将其拆分为 CSV 文件相当困惑,因此以下是一些关于如何可能帮助您加载这么多列的想法:

  • 请务必使用最小大小的整数:TINYINT UNSIGNED 仅 1 个字节,允许数字 0..255。其他尺寸请参阅手册。
  • 请务必使用最小尺寸的 VARCHAR:不要简单地对所有内容都使用 VARCHAR(255)。如果未达到目标,则会被截断,因此可能需要多次传递才能找出最佳尺寸。
  • 对您知道只是英语甚至西欧的任何列使用CHARACTER SET latin1。否则,必要时使用 utf8utf8mb4
  • 除非必要,否则避免使用 TEXTBLOB

向我们展示数据样本;我们可能有更多提示。

(您可以将 16KB 限制提高到 64KB,但这将永远改变所有表的限制。几乎没有人这样做。我不知道其中的危险(如果有)。)

关于mysql - 如何使用 MariaDB 5.5 修复 "ERROR 1118 (42000): Row size too large (> 8126)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483616/

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