• mysql 导入数据报错ERROR 1118 (42000): Row size too large (> 8126)


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 Laughing哥学java 2024-06-14 14:48 采纳率: 0% 浏览 6 首页/ 大数据 / mysql 导入数据报错ERROR 1118 (42000): Row size too large (> 8126) mysql数据库 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配置也不行 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • 阿里嘎多学长 2024-06-14 14:59
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      首先,让我们逐一分析错误提示和配置文件内容,然后提供可能的解决方案。

      错误分析

      • 错误代码: ERROR 1118 (42000) 表示MySQL遇到了一个警告或错误。
      • 问题描述: 行大小超过了8126字节的限制。这是InnoDB存储引擎对单行数据大小的限制。
      • 可能的解决方案:
        • 将某些列更改为TEXTBLOB类型。这些类型允许存储较大的数据量,并且不会直接影响行大小限制。
        • 使用ROW_FORMAT=DYNAMICROW_FORMAT=COMPRESSEDDYNAMIC格式允许更灵活的行大小,而COMPRESSED格式可以减少存储需求。
      • 当前行格式问题: BLOB前缀768字节被内联存储,这可能是由于使用了ROW_FORMAT=REDUNDANTROW_FORMAT=COMPACT导致的。在这些格式下,BLOB和TEXT列的前缀会被存储在行中,增加行的大小。

      配置文件分析

      • innodb_strict_mode=0: 这个设置表示InnoDB将运行在宽松模式下,一些严格检查会被忽略。通常,这不是解决行大小问题的关键。
      • innodb_file_per_table: 这个设置启用后,每个表的数据和索引将存储在单独的文件中,而不是在系统表空间中。这有助于管理大型数据库,但并不直接影响行大小限制。
      • innodb_file_format: 配置文件中可能存在拼写错误,应为innodb_file_format=Barracuda。Barracuda是InnoDB的文件格式,支持更大的索引和更好的性能。

      解决方案

      1. 修改表结构: 将一些大的列转换为TEXTBLOB类型。

      2. 更改行格式: 尝试将表的行格式更改为DYNAMICCOMPRESSED。可以通过以下SQL命令实现:

        ALTER TABLE your_table_name ROW_FORMAT=DYNAMIC;
        

        或者

        ALTER TABLE your_table_name ROW_FORMAT=COMPRESSED;
        

        注意:使用COMPRESSED格式需要MySQL服务器支持。

      3. 检查配置文件: 确保innodb_file_format设置正确,并且没有拼写错误。在my.cnfmy.ini文件中添加或修改以下行:

        [mysqld]
        innodb_file_format=Barracuda
        
      4. 重新启动MySQL服务: 应用配置更改后,需要重新启动MySQL服务以使更改生效。

      代码实现

      如果你需要通过脚本自动化这个过程,可以使用以下步骤:

      • 编写脚本来检查和修改my.cnfmy.ini文件中的innodb_file_format设置。
      • 使用MySQL客户端工具执行ALTER TABLE命令。

      参考资料

      请注意,上述解决方案需要根据你的具体数据库环境和需求进行调整。如果你不熟悉这些操作,建议在执行之前备份数据库,并在测试环境中进行尝试。

      展开全部

      评论 编辑记录
      Laughing哥学java 2024-06-14 16:33

      还是不行怎么办

      回复
    • Kwan的解忧杂货铺 2024-06-14 15:00
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      这个问题似乎是MySQL中的一个错误,通常这个错误出现在尝试将大型表插入到数据库中时。

      首先,你可以尝试改变一些列的类型为TEXT或BLOB,或者使用ROW_FORMAT=DYNAMIC或ROW_FORMAT=COMPRESSED来增大这些列的大小,从而减少他们的行数。但是这种方法并不能解决这个问题,因为当你使用ROW_FORMAT=COMPRESSED时,实际的行大小会更大。

      如果你仍然无法解决问题,那么你可以试着重置MyISAM引擎。这可能会解决这个问题,因为它不支持大型的行存储。

      以下是详细的步骤:

      1. 打开MySQL客户端。

      2. 使用以下命令来检查MyISAM引擎的状态:

      SHOW ENGINE INNODB STATUS;
      
      1. 如果你看到"MyISAM"引擎是绿色的,说明它正在运行正常。如果它是红色的,说明它可能存在问题。

      2. 在命令后添加"FLUSH PRIVILEGES;"以关闭所有的权限更改。这样可以确保你在重置MyISAM引擎之前没有对它进行任何更改。

      3. 使用以下命令来重置MyISAM引擎:

      SET Global SQLmode='STRICT';
      FLUSH PRIVILEGES;
      
      1. 重启MySQL服务器,使其启动到重置模式。

      以上就是解决MySQL导入数据问题的一些基本步骤,希望能对你有所帮助。

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    Python数据攻略-Mongodb数仓无法写入方法汇总
    bluecmsv1.6代码审计
    Docker 教程
    转码服务serverless探索
    Canvas绘制矢量图问题,怎么去掉不是完整的矩形
    ANACONDA的进阶理解和思考
    Java面试题之——异常和错误
    MySQL 日志管理、备份与恢复
    C#核心12——面向对象七大原则
    JS点击图片指定对象变色两种方法
  • 原文地址:https://ask.csdn.net/questions/8118627