本文概述
- 1.找到my.cnf文件
- 2.增加innodb_log_file_size的值
SQLSTATE [42000]:语法错误或访问冲突:1118行大小太大(> 8126)。将某些列更改为TEXT或BLOB或使用ROW_FORMAT = DYNAMIC或ROW_FORMAT = COMPRESSED可能会有所帮助。在当前行格式中, 内联存储768个字节的BLOB前缀。
并且你确定表的行格式设置为Dynamic, 你可能会遇到innodb日志文件大小和严格模式的问题。在本文中, 我们将向你展示如何防止此异常在MySQL 5.7中出现。
1.找到my.cnf文件第一步, 你需要搜索MySQL的配置文件。没有内部MySQL命令可跟踪此文件的位置, 因此该文件可能位于5个(或更多)位置, 并且它们均有效, 因为它们会加载级联:
- /etc/my.cnf
- /etc/mysql/my.cnf
- $ MYSQL_HOME / my.cnf
- [datadir] /my.cnf
- ?/ .my.cnf
find / -name my.cnf
找到文件后, 请使用CLI编辑器(如nano)将其打开, 然后继续下一步。
2.增加innodb_log_file_size的值在我们的例子中, 该文件位于/etc/mysql/my.cnf, 因此我们可以使用带有以下命令的文件使用nano编辑该文件:
nano /etc/mysql/my.cnf
你将需要禁用MySQL的严格模式并增加innodb日志文件的大小。启用innodb_strict_mode时, InnoDB在某些情况下会返回错误而不是警告。与许多数据库管理系统一样, MySQL使用日志来实现数据持久性(使用默认的InnoDB存储引擎时)。这样可以确保在提交事务时, 不会因崩溃或断电而丢失数据。 MySQL的InnoDB存储引擎使用固定大小(圆形)的Redo日志空间。大小由innodb_log_file_size控制。如果增加此属性的值, 则在MySQL 5.7中存储多列文本时将摆脱此异常。
本文将不讨论有关innodb日志文件大小合适的主题, 而是建议你阅读本文, 其中包含有关如何选择此值的详细说明和事实。由于我们只是与你共享此问题的解决方案, 因此我们将使用512M的值, 因此要添加到my.cfn文件的mysqld块中的参数将是:
# Important: inside the mysqld block[mysqld]# Add new log file sizeinnodb_log_file_size=512M# Disable strict modeinnodb_strict_mode=0
文件外观的示例:
## The MySQL database server configuration file.## You can copy this to one of:# - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options.## One can use all long options that the program supports.# Run program with --help to get a list of available options and with# --print-defaults to see which it would actually understand and use.## For explanations see# http://dev.mysql.com/doc/mysql/en/server-system-variables.html## * IMPORTANT: Additional settings that can override those from this file!#The files must end with '.cnf', otherwise they'll be ignored.#!includedir /etc/mysql/conf.d/!includedir /etc/mysql/mysql.conf.d/[mysqld]# Add new log file sizeinnodb_log_file_size=512M# Disable strict modeinnodb_strict_mode=0
尽管我们没有涵盖由动态行格式消除的行大小限制所引起的问题的详细说明, 但你可能需要访问本文来告知自己有关此问题的信息。将更改保存到文件中后, 根据操作系统和安装过程使用cli重新启动mysql, 例如:
# Ubuntusudo service mysql restart# CentOS/etc/init.d/mysqld start
【如何解决SQLSTATE [42000](语法错误或访问冲突:1118行大小太大(8126)在MySQL 5.7中)】编码愉快!
推荐阅读
- 在编程中如何确定一年是否飞跃
- Android / Java - 在位图底部绘制文本
- Android QR位图需要帮助才能删除保证金
- Android - 将ImageView设置为URL
- Android SkImageDecoder :: Factory返回null错误
- 直接从Android活动下载图像
- 在android下载文件时更新进度条
- Android Firebase下载声音
- Android Studio(如何从自动完成中重新包含已排除的库())