MySQL-QA-异常问题及解决方案(持续更新)

MySQL-Q&A(持续更新)

在这里插入图片描述

1.1 PID文件找不到

  • 问题描述

    错误详情:

    ERROR!The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid)

  • 解决方案

    首先排查配置文件,一般路径为:/etc/my.cnf

    检查是否有多余空格、无效属性、无效字符等

    如未检查出错误,将配置文件还原最初尝试启动,或者拷贝一份其他系统的配置文件。

1.2 数据库模式问题

  • 问题描述

    导入SQL文件时报错(在执行创建表或者增加字段时,发现row size长度过长,会导致出现以下错误)

    [ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB

  • 解决方案

    查看严格模式是否开启

    此异常是因为数据库开启了严格模式

    # 该sql语句查询数据库严格模式属性
    show variables like '%innodb_strict_mode%';
    

    执行后,innodb_strict_mode属性为ON,则代表严格模式开启,需要关闭

    Variable_name Value
    innodb_strict_mode ON

    修改严格模式配置

    # 修改MySQL配合文件,一般在/etc/my.cnf
    [root@localhost ~]# vi /etc/my.cnf
    # 在[mysqld]配置项下面新增一行
    [mysqld]
    innodb_strict_mode=0
    # 保存后,重启MySQL服务
    [root@localhost ~]# service mysqld restart
    

    查看严格模式是否修改

    # 登录MySQL,查询innodb_strict_mode为OFF,说明已关闭
    show variables like '%innodb_strict_mode%';
    

    问题解决

1.3 时区问题

  • 问题描述

    连接报错信息如下:

    java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

  • 解决方案

    连接url添加时区配置

    url: jdbc:mysql://localhost:3306/testuseUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

1.4 MySQL主从错误

  • 问题描述

    MySQL主从库不同步1236错误:could not find first log file name in binary log index file错误是主从的一个日志问题,只要简单的配置一下即可解决。

    最近造成MySQL主从库不同步问题,主要是因为电脑断了一下电,
    从库日志中的错误:

    Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 
    ‘Could not find first log file name in binary log index file’
    
  • 解决方案

    1. 停止从库同步

      mysql >slave stop;
      
    2. 主库中关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加

      mysql >flush logs;
      
    3. 查看主库状态,主要查看日志文件和位置:

      mysql >show master status;
      
    4. 回到从库中,执行命令,使日志文件和位置对应主库:

      mysql >CHANGE MASTER TO MASTER_LOG_FILE='log-bin.000005',MASTER_LOG_POS=107;
      
    5. 启动从库:

      mysql >slave start;
      mysql >show slave status; 
      
    6. 状态如下,基本上是正常了,可以主库修改,测试一下从库是否同步。

      Slave_IO_State: Waiting for master to send event
      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
      

1.5 MySQL连接错误

  • 异常描述

    No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

  • 异常原因

    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

    The following required algorithms might be disabled: SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves. Edit the list of disabled algorithms to include required algorithms. You can try to enable TLSv1 or TLSv1.1 first.

    JDBC driver may have disabled TLS > 1.1.

  • 解决方案

    在URL中添加在数据库后面添加

    ?createDatabaseIfNotExist=true&useSSL=false
    

    如:

    jdbc:mysql://192.168.2.2:3306/test?createDatabaseIfNotExist=true&useSSL=false
    

1.6 MySQL/MariaDB drop database error

  • 异常描述

    ERROR 1010 (HY000): Error dropping database (can’t rmdir ‘./db_test’, errno: 39)

  • 解决方案

    直接去MySQL/MariaDB数据库目录下删掉

    # rm -rf /usr/local/mysql/data/db_test
    

    有时候目录不一样,可以直接查找目录

    # 查询到数据库目录删掉就可以
    find / -name db_test
    

1.7 group_concat 长度限制

  • 默认值

    group_concat 默认值 1024

  • 属性详情

    • 用了group_concat后,select里如果使用了limit是不起作用的.
    • 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
    • 使用group_concat_max_len系统变量,你可以设置允许的最大长度。
    • 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
      SET [SESSION | GLOBAL] group_concat_max_len = val;
    • 若已经设置了最大长度,则结果被截至这个最大长度。
      在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会生效。
    • GROUP_CONCAT将某一字段的值按指定的字符进行累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。可以对这些参数进行修改。
  • 示例

    • 累加

      select group_concat(f_a) from t_one group by f_b;

      按f_b进行分组查询,将每组中的f_a进行累加。

    • 修改默认的分隔符

      select group_concat(f_a separator ‘_’) from t_one group by f_b;

      separator 是一个关键字,后面跟着要进行分隔的字符

    • 排序

      select group_concat(f_a order by f_a separator ‘_’) from t_one group by f_b;

  • 修改默认字符大小

    1).在MySQL配置文件中加上
    group_concat_max_len = 102400 #你要的最大长度
    2).可以简单一点,执行语句,可以设置作用范围
    SET GLOBAL group_concat_max_len=102400;
    SET SESSION group_concat_max_len=102400;

  • 和concat使用

    group_concat默认返回的是BLOB大对象,可以使用concat,返回字符串,还可以在返回的内容,在加入其它的数 据。

1.8 Mysql的大字段问题

1.8.1 问题描述
  • 报错一

    Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs

  • 报错二

    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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.

1.8.2 问题原因

因为mysql-innodb是按照page存储数据的,每个page max size是16k,然后每个page两行数据,所以每行最大8k数据。如果你的字段是blob之类的话,会存储在page之外的溢出区里。

但是innodb默认的approach(羚羊)存储格式会把每个blob字段的前864个字节存储在page里,所以你的blob超过一定数量的话,单行大小就会超过8k,所以就报错了

1.8.3 解决方案

解决方式是使用innodb的Barracuda(梭鱼) 存储格式

这种格式对blob字段的处理方式是在page里头只存储一个20byte大小的指针,其它全存在溢出区,所以你轻易超不了8k

  • 步骤一

    打开mysql的配置my.ini。添加:max_allowed_packet=16M

  • 步骤二

    打开mysql的配置my.ini。在innodb配置出添加:innodb_file_per_table=1

  • 步骤三

    然后命令检查下上述开关是否打开。

    show variables like ‘%per_table%’;

  • 步骤四

    设置mysql全局变量:innodb_file_format = Barracuda(梭鱼)

    命令:set GLOBAL innodb_file_format = ‘Barracuda’;

    然后检查下是否设置好了:

    命令:show GLOBAL VARIABLES LIKE ‘%file_format%’;

  • 步骤五

    设置对应表的属性:ROW_FORMAT=COMPRESSED

    然后检查下标的属性是否是你设置的:COMPRESSED

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/448060.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos安装hadoop启动问题解决方案

1、出现了问题localhost: ERROR: JAVA_HOME is not set and could not be found. *解决方案尝试&#xff1a; 修改hadoop-env.sh&#xff08;在etc/hadoop&#xff09; sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh 将原本的JAVA_HOME 替换为绝对路径就可以了 #expo…

RK3588-hdmiin

1. HDMI-IN简介 HDMI IN功能可以通过桥接芯⽚的⽅式实现&#xff0c;将HDMI信号转换成MIPI信号接收RK3588芯⽚平台⾃带HDMI RX模块&#xff0c;可以直接接收HDMI信号&#xff0c;无需通过桥接芯⽚实现。在ArmSoM系列产品中&#xff0c;ArmSoM-W3支持HDMI-IN功能HDMI-IN功能框图…

3.10复试专业课日报【周末总结】

数据结构 考点一&#xff0c;考点二 操作系统 计算机网络 组成原理 1.什么是中断向量 2. 数据库 选择题80-100 1.数据库的逻辑模型&#xff08;数据模型&#xff09; 2.DCL,DML,DQL,DDL 3.数据库特点 算法 1.复习 对称二叉树&#xff0c;二叉树最大深度 2.只出现一…

Mybatis-plus学习之Lombok

何为Lombok Lombok 是一个 Java 库&#xff0c;旨在通过自动生成样板代码来简化 Java 类的编写。它通过使用注解来减少冗长和重复的代码&#xff0c;提高代码的可读性和开发效率。 优点与优势 使用 Lombok&#xff0c;你可以在 Java 类中添加各种注解&#xff0c;从而自动为…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《含海上风电制氢的综合能源系统分布鲁棒低碳优化运行》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Navicat连接数据库出现的问题(3.8)

Navicat使用教程——连接/新建数据库、SQL实现表的创建/数据插入、解决报错【2059-authentication plugin‘caching_sha2_password’……】_2059authentication plugin-CSDN博客

NTC 测试温度

NTC 测温应用电路汇总及温度读取软件设计 - 知乎 1.开尔文273.5就是0摄氏度 2.B一般厂家都会给 3.上面公式大概准 4.计算还是查表法&#xff0c;段与段之间近似直线

Net8 ABP VNext集成FreeSql、SqlSugar

ABP可以快速搭建开发架构&#xff0c;但是内置的是EFCore&#xff0c;国内中小企业使用FreeSql与SqlSugar还是较多&#xff0c;为新手提供使用提供参考 ABP、FreeSql、SqlSugar参考地址&#xff1a; ABP Framework | Open source web application framework for ASP.NET Core…

在win7中快速安装vue2

首先要求我们安装node.js 如果没有安装可以点击跳转 安装node 1.配置环境变量 其实安装完node&#xff0c;就自动在path里增加环境变量&#xff0c;但是为了以后的本地部署项目&#xff0c;我们需要找到node.js的安装根目录 1.1在当中新建"node_cache"缓存和&qu…

两会声音|中国石化人大代表:要突出战略性新兴产业、未来产业的位置

十四届全国人大二次会议即将闭幕&#xff0c;“新质生产力”首次写入政府工作报告&#xff0c;并出现在了重要位置。政府工作报告主要从推动产业链供应链优化升级、积极培育新兴产业和未来产业、深入推进数字经济创新发展等三个方面进行了阐述和规划。 全国两会期间&#xff0c…

使用Vite构建Vue3+TypeScript项目

1&#xff0c;新建项目前&#xff0c;确保电脑 已经安装Node.js&#xff0c;pnpm 在本地新建一个文件夹 &#xff0c;在文件路径输入cmd 如下展示 2&#xff0c;执行如下指令搭建项目 filename,即搭建的项目名称。 pnpm create vitelatest filename 输入指令按回车之后如下…

29个社媒营销经典案例!外贸人速来学习!

今天给大家分享一些比较经典的外贸社媒营销案例&#xff0c;希望对大家有帮助&#xff01; 01 创建重复的内容系列 如果你每天都在为决定要在社交媒体上发布什么内容而焦头烂额&#xff0c;那就创建一些你擅长的重复内容系列和主题。 例如&#xff0c;有人经常分享鼓舞人心的…

EDM营销怎么做才能提高转化率?怎么策划?

EDM营销怎么做才能达到最大效果&#xff1f;如何成功制定EDM营销策略&#xff1f; EDM营销仍然是企业营销策略中不可或缺的一环。然而&#xff0c;仅仅发送电子邮件并不足以保证高转化率&#xff0c;EDM营销怎么做才能真正达到预期效果呢&#xff1f;接下来&#xff0c;AokSen…

【Python】一文详细介绍plt.rcParams 在 Matplotlib 中的原理、作用、注意事项

【Python】一文详细介绍plt.rcParams 在 Matplotlib 中的原理、作用、注意事项 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x…

【完美实现】VITE + VUE3 + SVG图片解析+element-plus开发环境初始化(基于macos)

一、最终效果 废话少说&#xff0c;直接上效果 这是我的初始化程序提供的页面&#xff0c;在这个页面上实现了一下几个功能&#xff1a; 1、vite初始化之后的路由安装和初始化&#xff1b; 2、标准SVG的解析&#xff0c;并可调整大小、颜色&#xff1b; 3、element-plus的安…

wsl2安装docker以及nvidia-docker

前提 想在wsl2(Ubuntu20.04)环境中使用docker以及nvidia-docker来编译一些程序&#xff0c;这里对安装过程进行记录。 注意&#xff1a;wsl2中的安装docker和物理机器上安装docker的过程并不相同。因为wsl2方式的ubuntu里面没有systemd&#xff0c;所以通过apt insta docker-…

信息系统项目管理师--成本管理

项⽬成本管理重点关注完成项⽬活动所需资源的成本&#xff0c;但同时也考虑项⽬决策对项⽬产品、服务或成果的使⽤成本、维护成本和⽀持成本的影响。不同的⼲系⼈会在不同的时间&#xff0c;⽤不同的⽅法 测算项⽬成本。 就某些项⽬&#xff0c;特别是⼩项⽬⽽⾔&#xff0c;成…

【docker】docker部署java web项目

docker部署java web项目 一、docker操作centos及docker设置entos yum 设置配置docker镜像加速器 二、image 镜像操作拉镜像导出镜像删除本地镜像加载本地镜像 三、container 容器操作Nginx容器示例Redis容器示例 docker数据卷的使用自定义镜像构建镜像 实践代码编写Dockerfile制…

如何解决ChatGPT消息发不出问题,GPT消息无法发出去,没有响应的问题

前言 今天工作到一半&#xff0c;登陆ChatGPT想咨询一些代码上的问题&#xff0c;结果发现发不了消息了。 ChatGPT 无法发送消息&#xff0c;但是能查看历史的对话。不过首先可以先打开官方的网站&#xff1a;https://status.openai.com/ 。 查看当前Open AI的状态&#xff0…