mysql 导入数据报错ERROR 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.
设置myini配置也不行
mysql 导入数据报错ERROR 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.
设置myini配置也不行
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
首先,让我们逐一分析错误提示和配置文件内容,然后提供可能的解决方案。
ERROR 1118 (42000)
表示MySQL遇到了一个警告或错误。TEXT
或BLOB
类型。这些类型允许存储较大的数据量,并且不会直接影响行大小限制。ROW_FORMAT=DYNAMIC
或ROW_FORMAT=COMPRESSED
。DYNAMIC
格式允许更灵活的行大小,而COMPRESSED
格式可以减少存储需求。ROW_FORMAT=REDUNDANT
或ROW_FORMAT=COMPACT
导致的。在这些格式下,BLOB和TEXT列的前缀会被存储在行中,增加行的大小。innodb_strict_mode=0
: 这个设置表示InnoDB将运行在宽松模式下,一些严格检查会被忽略。通常,这不是解决行大小问题的关键。innodb_file_per_table
: 这个设置启用后,每个表的数据和索引将存储在单独的文件中,而不是在系统表空间中。这有助于管理大型数据库,但并不直接影响行大小限制。innodb_file_format
: 配置文件中可能存在拼写错误,应为innodb_file_format=Barracuda
。Barracuda是InnoDB的文件格式,支持更大的索引和更好的性能。修改表结构: 将一些大的列转换为TEXT
或BLOB
类型。
更改行格式: 尝试将表的行格式更改为DYNAMIC
或COMPRESSED
。可以通过以下SQL命令实现:
ALTER TABLE your_table_name ROW_FORMAT=DYNAMIC;
或者
ALTER TABLE your_table_name ROW_FORMAT=COMPRESSED;
注意:使用COMPRESSED
格式需要MySQL服务器支持。
检查配置文件: 确保innodb_file_format
设置正确,并且没有拼写错误。在my.cnf
或my.ini
文件中添加或修改以下行:
[mysqld]
innodb_file_format=Barracuda
重新启动MySQL服务: 应用配置更改后,需要重新启动MySQL服务以使更改生效。
如果你需要通过脚本自动化这个过程,可以使用以下步骤:
my.cnf
或my.ini
文件中的innodb_file_format
设置。ALTER TABLE
命令。请注意,上述解决方案需要根据你的具体数据库环境和需求进行调整。如果你不熟悉这些操作,建议在执行之前备份数据库,并在测试环境中进行尝试。