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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

D2力扣滑动窗口系列

滑动窗口算法&#xff08;Sliding Window&#xff09;&#xff1a; 滑动窗口算法&#xff08;Sliding Window&#xff09;&#xff1a;在给定数组 / 字符串上维护一个固定长度或不定长度的窗口。可以对窗口进行滑动操作、缩放操作&#xff0c;以及维护最优解操作。 滑动操作&am…

【Ubuntu】gonme桌面的 gdm 和 lightdm 区别

总结&#xff1a;都可以 gdm: 【Gnome Display Manager】 完整&#xff0c;体积大 lightdm: 【Light Display Manager】 轻量

甜甜圈和贪吃蛇的后续

代码复现-项目复现 代码复现 云课五分钟-02第一个代码复现-终端甜甜圈C-CSDN博客 项目复现 云课五分钟-03第一个开源游戏复现-贪吃蛇-CSDN博客 不同的地图 加入班级和标识 循序渐进 这些案例都是来源网络&#xff0c;只是方便熟悉一下云课使用过程。 此部分学生掌握情况非…

OpenCV 图像的几何变换

一、图像缩放 1.API cv2.resize(src, dsize, fx0,fy0,interpolation cv2.INTER_LINEAR) 参数&#xff1a; ①src &#xff1a;输入图像 ②dsize&#xff1a;绝对尺寸 ③fx&#xff0c;fy&#xff1a;相对尺寸 ④interpolation&#xff1a;插值方法 2.代码演示 import cv2 …

携手亚信安慧AntDB,在数智化浪潮中乘风破浪

随着大数据时代的到来&#xff0c;对数据库的需求愈发强烈。在这一背景下&#xff0c;国产数据库逐渐崭露头角&#xff0c;亚信安慧AntDB作为重要的代表产品之一正积极参与到激烈的市场竞争中。亚信安慧AntDB不仅追求技术的革新和突破&#xff0c;同时也致力于满足用户日益增长…

AVCE - AV Evasion Craft Online 更新 8 种加载方式 - 过 WD 等

免责声明&#xff1a;本工具仅供安全研究和教学目的使用&#xff0c;用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任&#xff0c;且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规&#xff0c;并理解并同意本声明…

2023年中国高校大数据挑战赛D题参考论文发布(全网首发)

腾讯文档】2023年大数据挑战赛资料说明 https://docs.qq.com/doc/DSEpWUVFySm1ObFB0 基于数据分析的行业职业技术培训能力评价 摘要 中国是制造业大国&#xff0c;产业门类齐全&#xff0c;每年需要培养大量的技能娴熟的技术工人进入工厂。本文将基于题目给出的数据&#x…

Java——正则表达式详解

目录 Java正则表达式1、正则表达式语法1.1、基本的元字符1.2、数量元字符1.3、位置元字符1.4、特殊字符元字符1.5、回溯引用和前后查找1.6、大小写转换1.7、匹配模式 2、Java中的正则表达式2.1、概述2.2、获取匹配位置2.3、捕获组 3、匹配单个字符3.1、匹配纯文本3.2、匹配任意…

讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so

1.需求 最近linux下的Qt项目中要连接oracle数据库&#xff0c;用户需要我们访问他们的oracle数据库&#xff0c;查询数据 2.遇到的问题 qt连接oracle数据库需要oracle的驱动库libqsqloci.so插件&#xff0c;需要编译下&#xff0c;之前没有编译过&#xff0c;看了网上的…

蓝桥杯真题讲解:异或和之和 (拆位、贡献法)

蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09; 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09; 二、正解代码 //拆位考虑 #include<bits/stdc.h> #define endl &…

【c++】string类的使用及模拟实现

1.我们为什么要学习string类&#xff1f; 1.1 c语言中的字符串 我们先了解一下什么是OOP思想 OOP思想&#xff0c;即面向对象编程&#xff08;Object-Oriented Programming&#xff09;的核心思想&#xff0c;主要包括“抽象”、“封装”、“继承”和“多态”四个方面。 抽象…

JDBC和连接池

JDBC和连接池 大纲 JDBC连接数据库的方式JDBCUtils事务 具体案例 JDBC 需求&#xff1a;满足Java程序能对多个不同的数据库进行操作&#xff0c;而创建了一种接口&#xff0c;实现对数据库的规范 连接数据库的方式 1.方法1 先创建一个Driver对象&#xff0c;然后设置…

【RabbitMQ】RabbitMQ的交换机

交换机类型 在上文中&#xff0c;都没有交换机&#xff0c;生产者直接发送消息到队列。而一旦引入交换机&#xff0c;消息发送的模式会有很大变化&#xff1a;可以看到&#xff0c;在订阅模型中&#xff0c;多了一个exchange角色&#xff0c;而且过程略有变化&#xff1a; Pub…

Android bp构建引入其他模块头文件

最近做项目过程中经常遇到Android.bp文件引入其他模块的头文件库&#xff0c;总是记不住bp的写法&#xff0c;这里做个记录 1.产生头文件库 2.其他的模块应用引入头文件库 不由想起来老师的名句&#xff1a;好记忆不如烂笔头。

基于遗传算法改进的RBF神经网络流量控制,基于GA-RBF的流量预测

目录 完整代码和数据下载链接:基于遗传算法改进的RBF神经网络流量控制,基于GA-RBF的流量预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88937452 RBF的详细原理 RBF的定义 RBF理论 易错及常见问题 RBF应用实例,基于遗传算法改…

【Python使用】python高级进阶知识md总结第3篇:静态Web服务器-返回指定页面数据,静态Web服务器-多任务版【附代码文档】

python高级进阶全知识知识笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;操作系统&#xff0c;虚拟机软件&#xff0c;Ubuntu操作系统&#xff0c;Linux内核及发行版&#xff0c;查看目录命令&#xff0c;切换目录命令&#xff0c;绝对路径和相对…

笔记79:ROS入门之前的准备

一、ROS是什么 ROS其实是一个伪操作系统&#xff0c;是基于Liunx操作系统的一个用于机器人各个节点之间通信的系统&#xff1b;ROS制定了一系列规则使得每个节点之间遵循相同的通信规则&#xff0c;使得每个人都可以有一个守则区遵守开发自己的节点&#xff0c;也能和别人开发…

Linux -- 线程概念和控制

一 什么是线程 1.1 线程的引出 我们开始理解一下Linux中的线程。我们以前说过&#xff0c;一个进程被创建出来&#xff0c;要有自己对应的进程PCB的&#xff0c;也就是 task_struct&#xff0c;也要有自己的地址空间、页表&#xff0c;经过页表映射到物理内存中。所以在进程角…

基于java ssm springboot女士电商平台系统

基于java ssm springboot女士电商平台系统源码文档设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…

WebPack自动吐出脚本

window.c c; window.res ""; window.flag false;c function (r) {if (flag) {window.res window.res "${r.toString()}" ":" (e[r] "") ",";}return window.c(r); }代码改进了一下&#xff0c;可以过滤掉重复的方…