在创建数据库表时报错

之前已经在数据库里创建了多张表,但在创建其中一张数据库表时报如下错:

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.
Query OK, 0 rows affected (0.00 sec)

原因分析

这篇文章说得比较清楚: 链接。

简单来说,就是在InnoDB引擎下创建表时行格式无法存储它,可能有以下原因:

  1. strict mode 模式启用后,DDL 语句被执行时影响了表,如 CREATE TABLE or ALTER TABLE 操作,这时会抛出Error信息。
  2. strict mode 模式被禁用后,DDL 语句被执行时影响了表,如 CREATE TABLE or ALTER TABLE 操作,这时会抛出Warning信息。
  3. 不管strict mode 模式是否启用,DML语句被被执行写入一行时,InnoDB引擎行无法存储它时,会抛出这个Error信息。

我发现是第三种情况,因为网上很多人说是要设置下 strict mode 模式进行解决,我发现解决不了。

根本原因

在InnoDB引擎下,存在最大的row size的限制,它的限制大约是 innodb_page_size 这个系统变量的一半。详情。

但不同的row format其具体值也会不一样,其中 DYNAMICCOMPRESSED row size是最大的。在做row format时,有以下几种模式:

  • REDUNDANT (MySQL 4.1 之前默认采用的方式)
  • COMPACT (MariaDB [10.1~10.2.1] 和 MySQL 5.6 之前默认采用的方式)
  • DYNAMIC (MariaDB >= 10.2.2 默认采用的方式)
  • COMPRESSED

四种不同的格式详情可参考:
https://mariadb.com/kb/en/innodb-row-formats-overview

解决方法

将表的row format改成 DYNAMIC 或者 COMPRESSED 可解决

ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ...相关推荐

  1. 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMI

    ERROR 1118 (42000) at line 5: Row size too large (> 8126). Changing some columns to TEXT or BLOB ...

  2. MySQL导入数据库1118错误解决方案[ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB

    导入SQL文件时报错(在执行创建表或者增加字段时,发现row size长度过长,会导致出现以下错误) [ERR] 1118 - Row size too large (> 8126). Chan ...

  3. Mysql导入数据库报 [ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB

    今天将服务器上的数据库导出,在本机恢复的时候报错,错误代码如下: [ERR] 1118 - Row size too large (> 8126). Changing some columns ...

  4. Row size too large (> 8126). Changing some columns to TEXT or BLOB… | Mysql / MariaDB

    Row size too large (> 8126). Changing some columns to TEXT or BLOB- | Mysql / MariaDB 我们最近将客户网站迁移 ...

  5. MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB

    报错信息 Row size too large (> 8126). Changing some columns to TEXT or BLOB 分析原因 因为 mysql 默认的 page 最大 ...

  6. Mysql数据库报错:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY

    1.问题描述: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY ...

  7. 解决办法之Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC

    报错:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC ...

  8. Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC

    今天在对MySQL数据库进行数据处理时,遇到一个错误: Row size too large (> 8126). Changing some columns to TEXT or BLOB or ...

  9. MySQL5.7(Linux)创建表报错:“Row size too large (> 8126). Changing some columns to TEXT or BLOB may help.”

    今天在创建表的时候报错:" Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. I ...

最新文章

  1. hello word 程序 ——简单的spring ioc 学习
  2. [leetcode]Edit Distance
  3. 【poj3709】 K-Anonymous Sequence
  4. 开启进度比的文本为什么没有显示_没有开通智钻,为什么会显示流量是在智钻进店的呢?...
  5. WinForm 处理未处理的异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException
  6. 曾在美国生产的苹果电脑,如今却败得一塌糊涂
  7. Codeforces Round #565 (Div. 3) B
  8. adb命令启动activity、service,发送broadcast
  9. H5编辑器核心算法和思想-遁地龙卷风
  10. python判断空行_python判断空行
  11. linux分析mirna,利用DIANA Tools进行miRNA分析
  12. STM32:Modbus-RTU通讯协议——CRC校验
  13. 使用vue-print-nb打印element table时表格打印不全的问题
  14. ping百度的时候出现ping www.a.shifen.com
  15. 如何防止表单重复提交问题
  16. 信息无障碍产品研究举例
  17. 出来找工作,去创业公司好吗?
  18. 用计算机弹123我爱你数字,数字谐音
  19. html中伪类定义,伪类
  20. 5s换脸吴彦祖!爆红AI应用ZAO仍面临技术困境,你的“脸”被授权了吗?

热门文章

  1. 好以前写的一个java采集淘宝搜索页面商品数据的函数
  2. Cpp环境【POJ3069】【Vijos2995】 萨鲁曼的大军 Saruman's Army
  3. 大疆精灵4RTK的运用
  4. 小红帽中用eclipse编译windows程序遇到的问题处理备忘录
  5. 招聘牛人的五步骤蔡文贤_招聘技术人才的5个步骤
  6. Python快速查找每个站的最近的10个站
  7. kali linux忘记用户名,kali_linux忘记root密码怎么办?
  8. 华为信息流推广怎么收费的 华为推广需要多少钱
  9. uniapp 微信小程序如何解决发版后,旧版本缓存问题
  10. rust申请解封_参考 - Rust的确切自动解除引用规则是什么?