恢复 Django-mailer 数据库时 MySQL 错误 1118(行大小太大)

2023-11-23

我从 django 应用程序转储了一个正在运行的生产数据库,并尝试将其迁移到我的本地开发环境。生产服务器运行MySQL 5.1,本地我有5.6。

当迁移 django-mailer 的“messagelog”表时,我遇到了可怕的错误 1118:

ERROR 1118 (42000) at line 2226: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

我在网上阅读了很多有关此错误的内容,但都没有解决我的问题。

注意:这个错误是not来自表的创建,而是插入具有相当大数据的行。

Notes:

  1. innodb_file_format 和 innodb_file_format_max 变量设置为 Barracuda。
  2. ROW_FORMAT 在表创建时设置为 DYNAMIC。
  3. 该表没有太多列。架构如下:

    +----------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | message_data | longtext | NO | | NULL | | | when_added | datetime | NO | | NULL | | | priority | varchar(1) | NO | | NULL | | | when_attempted | datetime | NO | | NULL | | | result | varchar(1) | NO | | NULL | | | log_message | longtext | NO | | NULL | | +----------------+------------+------+-----+---------+----------------+

同样,仅当我尝试插入相当大的行(message_data 约为 5 MB)时才会发生错误;创建表工作正常,并且在失败之前添加了大约 500,000 行。

我没有主意了;我尝试过动态和压缩行格式,并且我已经三次检查了相关 innodb 变量的值:

mysql> show variables like "%innodb_file%"; +--------------------------+-----------+ | Variable_name | Value | +--------------------------+-----------+ | innodb_file_format | Barracuda | | innodb_file_format_check | ON | | innodb_file_format_max | Barracuda | | innodb_file_per_table | ON | +--------------------------+-----------+

创建代码(来自 SHOW CREATE TABLE)如下所示:

CREATE TABLE `mailer_messagelog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `message_data` longtext NOT NULL, `when_added` datetime NOT NULL, `priority` varchar(1) NOT NULL, `when_attempted` datetime NOT NULL, `result` varchar(1) NOT NULL, `log_message` longtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=869906 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC


根据其中一个答案this问题,您的问题可能是由 MySQL 5.6 中的更改引起的(请参阅 InnoDB Noteshttp://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-20.html):

InnoDB注释

重要更改:重做日志写入大型外部存储的 BLOB 字段可能会覆盖最近的检查点。 5.6.20补丁 将重做日志 BLOB 写入的大小限制为重做日志文件的 10% 尺寸。 5.7.5 补丁解决了该错误,但没有施加任何限制。 对于 MySQL 5.5,该错误仍然是一个已知的限制。

由于 MySQL 5.6 引入了重做日志 BLOB 写入限制, innodb_log_file_size 设置应该比 innodb_log_file_size 大 10 倍 在表的行中找到的最大 BLOB 数据大小加上 其他可变长度字段(VARCHAR、VARBINARY 和 TEXT)的长度 类型字段)。如果您的 innodb_log_file_size 设置已经足够大或者您的表不包含 BLOB 数据。

注意在MySQL 5.6.22中,重做日志BLOB写入限制放宽至10% 总重做日志大小 (innodb_log_file_size * innodb_log_files_in_group)。

(错误#16963396、错误#19030353、错误#69477)

如果你改变的话会有帮助吗innodb_log_file_size大于 50M 的东西? (更改该变量需要一些步骤才能正常工作:

https://dba.stackexchange.com/questions/1261/how-to-safely-change-mysql-innodb-variable-innodb-log-file-size ).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

恢复 Django-mailer 数据库时 MySQL 错误 1118(行大小太大) 的相关文章

随机推荐

  • 在 Renderscript 计算中将数组传递给 rsForEach

    据我所知 我发现 RenderScript 缺乏良好的文档 forEachRS 中的方法是对分配中的每个单独项目执行 root 我正在尝试为 Renderscript 制作一个进行图像处理的库 作为起点 我达到了这个很好的答案 但问题是模糊
  • NSURLSession 和后台流上传

    我在使用时遇到一些问题NSURLSession将照片从资源库上传到服务器 首先NSURLSession不支持流式上传 我在尝试使用它时遇到了异常 property nonatomic strong NSURLSession uploadSe
  • 如何使用密钥大小和明文长度计算 RSA 密文的大小?

    我有一些明文 我想使用 RSA PKCS V21 使用 PolarSSL 库 进行加密 问题是我需要在执行算法之前知道密文的大小 用于动态内存分配目的 我知道 RSA 密钥大小和明文长度 我还想知道输入明文长度的限制 任何想法 只需检查RS
  • Unicode 与实体框架

    我有一个带有 nvarchar 字段的表 MS SQL Server 2008 R2 对于测试 此代码运行良好 Update Screenshots set name N where id 230246 现在我创建了实体框架模型 我已将 U
  • Elisp 中的 CGI 编程?

    有人为 elisp 编写过 CGI 编程库吗 我快速拼凑了第一个脚本 然而 我只是一个长期的 emacs 用户 我从来没有真正编写过它 当我看到我可以在 emacs 而不是 bash 中编写脚本 script 时 我想我应该尝试一下 usr
  • 如果用户提交表单,则不要询问确认

    我使用以下 JavaScript 代码来警告用户 如果他尝试重定向到另一个页面而不提交表单 window onbeforeunload function return Are you sure that you want to leave
  • servicePrincipalName 应该具有什么值?

    我正在尝试在我的服务上设置客户端模拟 我需要为我的服务端点的 servicePrincipalName 设置一个值 我正在看这个MSDN 文章但还是不太明白 我的服务托管在我们称为 ServerName1 的服务器上的控制台应用程序中 乌里
  • 类型的打字稿扩展运算符[重复]

    这个问题在这里已经有答案了 我正在尝试定义一种类型 该类型获取函数类型作为泛型参数 并返回一个与输入函数类型相同的函数类型 只是它最后还有一个参数 type AugmentParam
  • java.lang.NoClassDefFoundError:无法初始化类 sun.nio.ch.FileChannelImpl

    我正在开发一个执行的应用程序Jython 2 5 3脚本来自JAVA 1 6 027 该脚本只是使用编解码器库打开一个文件 如下所示 try from codecs import open as codecs open except Imp
  • 以正确的方式避免循环依赖 - NestJS

    说我有一个StudentService一种为学生增加课程的方法LessonService使用一种将学生添加到课程中的方法 在我的课程和学生解决程序中 我希望能够更新本课程学生关系 所以在我的LessonResolver我有一些类似的事情 a
  • 在 VS Code 控制台中调试 JavaScript

    如何在 VSCode 控制台中快速测试 JavaScript 如下图所示 我必须安装扩展才能执行此操作吗 我在 Ubuntu 和 Windows 10 中使用 VSCode 但我没有看到Console 我所看到的只是调试控制台 Proble
  • 这个带有可变引用参数的 JavaScript 函数是纯函数吗?

    我有同样的问题this one 但是在 JavaScript 的上下文中 From 维基百科 纯函数 的返回值与same论据 那里进一步声称 纯函数不允许使用 可变引用参数 来改变返回值 在 JavaScript 中 每个普通对象都作为 可
  • 将简单套接字变成 SSL 套接字

    我编写了简单的 C 程序 它们使用套接字 客户端 和 服务器 UNIX Linux 用法 服务器端简单地创建一个套接字 sockfd socket AF INET SOCK STREAM 0 然后将其绑定到 sockaddr bind so
  • 为什么 JPA 实体中的属性不允许“公共”?

    The JPA 2 0规范第 22 页说 类的实例变量必须 是私有的 受保护的或包的 可见性与是否 字段访问或属性访问是 用过的 当使用属性访问时 属性访问器方法必须是 公共或受保护 为什么不允许公众访问 对于公共字段 代理将无法可靠地工作
  • 使用自定义访问者时,如何停止使用 Boost Graph Library 进行广度优先搜索?

    假设我找到了符合我的条件的节点 我需要停止搜索 解决方案是抛出已知类型的异常 然后在调用方捕获它 来自FAQ 如何提前退出 BFS 等算法 创建一个在您想要中断搜索时抛出异常的访问者 然后将对 breadth first search 的调
  • Select 和 SelectMany 之间的区别

    我一直在寻找之间的区别Select and SelectMany但我一直没能找到合适的答案 我需要了解使用 LINQ To SQL 时的区别 但我发现的只是标准数组示例 有人可以提供 LINQ To SQL 示例吗 SelectMany展平
  • OpenCV Android - 使用 CameraBridgeViewBase 的颜色问题

    我在使用 Android 模拟器和 OpenCV 时遇到一个奇怪的问题CameraBridgeViewBase Using onCameraFrame我收到一张看起来未正确解码的图片 public Mat onCameraFrame CvC
  • 数组的 Arrays.asList()

    这个转换有什么问题吗 public int getTheNumber int factors ArrayList
  • Haskell 计算密集型线程会阻塞所有其他线程

    我想编写一个程序 其主线程分叉一个新线程进行计算并等待它完成一段时间 如果子线程没有在给定时间内完成 它将超时并被终止 我有以下代码 import Control Concurrent fibs Int gt Int fibs 0 0 fi
  • 恢复 Django-mailer 数据库时 MySQL 错误 1118(行大小太大)

    我从 django 应用程序转储了一个正在运行的生产数据库 并尝试将其迁移到我的本地开发环境 生产服务器运行MySQL 5 1 本地我有5 6 当迁移 django mailer 的 messagelog 表时 我遇到了可怕的错误 1118