Barracuda

mysql5.7 [Err] 1118

橙三吉。 提交于 2020-11-24 14:51:58
mysql [Err] 1118 - Row size too large (> 8126). 问题 mysql5.7 在执行创建表或者增加字段时,发现row size长度过长,导致出现以下错误。 [Err] 1118 - 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. 解决方案 row size 其实就是所有字段的长度的总和。 在不进行拆表的前提下解决(我们不讨论是否设计的合理性) : 知识贴: https://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html You may want to take a look at this article which explains a lot about MySQL row sizes. It's important to note that even if you use TEXT or BLOB fields, your row size could still be over 8K (limit for InnoDB) because

MySQL前缀索引上限案例分析

我只是一个虾纸丫 提交于 2020-10-22 00:02:08
一、案例分享 1.1 问题描述 以下一例报错是开发同学通过框架初始化创建一些表结构时出现的报错,我们需要重点关注“1071 Specified key was too long; max key length is 7671071 Specified key was too long; max key length is 767 bytes”这个提示。该报错告诉我们索引长度超过的额767,因过长而无法创建索引。这也是为什么经常在一些MySQL的SQL审批中,DBA同学会经常要求某个表的字段长度尽量不要超过191、某些表的字段长度不要超过255。 Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes in /var/www/html/includes/vendor/aura/sql/src/ExtendedPdo.php:748 Stack trace: #0 /var/www/html/includes/vendor/aura/sql/src/ExtendedPdo.php(748): PDOStatement->execute() #1

CentOS7.6编译安装mysql-5.6.44源码

冷暖自知 提交于 2020-08-06 09:16:07
1安装依赖包 yum install gcc gcc-c++ make cmake libaio-devel openssl-devel zlib-devel ncurses-devel bison -y 2下载解压boost: mkdir /usr/local/src/boost && cd /usr/local/src/boost wget -c https://kent.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate 3下载mysql-5.6.44源码并解压: mkdir /usr/local/src/mysql && cd /usr/local/src/mysql wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.44.tar.gz 4进入MySQL解压目录,建立编译目录并进入编译目录: cd /usr/local/src/mysql/mysql-5.6.44 && mkdir build && cd build 5配置 mkdir /opt/mysql cmake /usr/local/src/mysql/mysql-5.6.44 -DCMAKE

技术分享 | MySQL 8.0:字符集从 utf8 转换成 utf8mb4

前提是你 提交于 2019-12-04 20:52:35
作者:胡呈清 整理 MySQL 8.0 文档时发现一个变更:默认字符集由 latin1 变为 utf8mb4。想起以前整理过字符集转换文档,升级到 MySQL 8.0 后大概率会有字符集转换的需求,在此正好分享一下。 当时的需求背景是:部分系统使用的字符集是 utf8,但 utf8 最多只能存 3 字节长度的字符,不能存放四字节的生僻字或者表情符号,因此打算迁移到 utf8mb4。 迁移方案一 1.准备新的数据库实例,修改以下参数: [mysqld] ## Character Settings init_connect='SET NAMES utf8mb4' #连接建立时执行设置的语句,对super权限用户无效 character-set-server = utf8mb4 collation-server = utf8mb4_general_ci #设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb4_bin skip-character-set-client-handshake #忽略应用连接自己设置的字符编码,保持与全局设置一致 ## Innodb Settings innodb_file_format = Barracuda innodb_file_format_max = Barracuda innodb_file_per_table = 1 innodb