相关疑难解决方法(0)

MySQL的行大小错误

我在我的 Macbook 上运行 MySQL 服务器(用于测试)。版本是来自 Homebrew 的 5.6.20。我开始遇到“行大小太大”错误,我已经能够将其减少到这个测试用例。桌子:

mysql> describe test;
+-------+----------+------+-----+---------+----------------+
| Field | Type     | Null | Key | Default | Extra          |
+-------+----------+------+-----+---------+----------------+
| id    | int(11)  | NO   | PRI | NULL    | auto_increment |
| stuff | longtext | YES  |     | NULL    |                |
+-------+----------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

表状态:

mysql> show table status where Name = 'test';
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | …
Run Code Online (Sandbox Code Playgroud)

mysql innodb

11
推荐指数
1
解决办法
2万
查看次数

MySQL:行大小太大 (> 8126)

我有一个表,里面有 300 列。每列最多为255个字节(也就是这个企业的理由)。

当我尝试使用创建它时VARCHAR(255),我超过了最大字节数的限制。所以我创建的是使用 300 个TEXT字段。然后当我尝试插入数据时,出现错误:

行大小太大 (> 8126)。
将某些列更改为 TEXT 或 BLOB 或使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 可能会有所帮助。
在当前行格式中,内联存储 768 字节的 BLOB 前缀。

阅读完此内容后,我尝试通过指定ROW_FORMAT=COMPRESSED. 现在的问题似乎是,当我尝试使用该格式创建表时,出现相同的错误。

CREATE TABLE T_ObjLarge__c (Id VARCHAR(18), Name VARCHAR(80),
ObjLarge_Field_1__c TEXT,
ObjLarge_Field_2__c TEXT,
...
ObjLarge_Field_300__c TEXT
) ROW_FORMAT=COMPRESSED ;
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

行大小太大 (> 8126)。
将某些列更改为 TEXT 或 BLOB 可能会有所帮助。
在当前行格式中,内联存储 0 字节的 BLOB 前缀。

我在 Linux mint 上使用 MySQL 5.5.31。没有索引。我试过DYNAMIC格式;它的行为方式相同。

的输出SHOW GLOBAL VARIABLES LIKE 'innodb_file_per_table';

+--------------------------+-----------+ …
Run Code Online (Sandbox Code Playgroud)

mysql innodb linux mysql-5.5

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

innodb ×2

mysql ×2

linux ×1

mysql-5.5 ×1