mysql8.0建表 SQL 错误 [1118] [42000]: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
时间: 2023-08-13 21:01:04 浏览: 151
这个错误是由于 MySQL 8.0 默认的行格式导致的。在 MySQL 8.0 中,行格式为 `DYNAMIC`,且每行的最大大小限制为 8126 字节当你尝试创建一个超过该限制的表时,就会出现 "Row size too large" 的错误。
为了解决这个问题,你可以尝试以下方法:
1. 使用 `ROW_FORMAT=DYNAMIC` 或 `ROW_FORMAT=COMPRESSED` 行格式来创建表。这些行格式允许更大的行大小。例如:
```sql
CREATE TABLE your_table (
column1 INT,
column2 VARCHAR(4000),
column3 TEXT,
...
) ROW_FORMAT=DYNAMIC;
```
或
```sql
CREATE TABLE your_table (
column1 INT,
column2 VARCHAR(4000),
column3 TEXT,
...
) ROW_FORMAT=COMPRESSED;
```
2. 将需要存储大量数据的列更改为 `TEXT` 或 `BLOB` 类型。这将使这些列以外部存储的方式进行存储,而不是内联存储在行中。例如,将 `VARCHAR` 类型列改为 `TEXT` 类型:
```sql
CREATE TABLE your_table (
column1 INT,
column2 TEXT,
column3 TEXT,
...
);
```
请注意,将列更改为 `TEXT` 或 `BLOB` 类型可能会影响查询和索引的性能。
3. 如果以上方法仍然无法解决问题,你可以考虑调整 MySQL 的配置文件,增加 `innodb_log_file_size` 和 `innodb_strict_mode` 的值。请注意,在修改配置文件之前,确保备份了重要的数据和配置文件。
这些方法应该能够帮助你解决 "Row size too large" 错误。如果问题仍然存在,建议根据你的具体需求,合理设计表结构,并确保每行的大小不超过 MySQL 的限制。