MySQL生产问题实践总结

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL生产问题实践总结

【1】Error:MySQL server has gone away

背景:将外部sql文件导入数据库。

解决办法:

Linux下修改my.conf;Windows下修改my-default.ini。

添加(修改)如下配置:

wait_timeout=2880000 
interactive_timeout = 2880000 
max_allowed_packet = 256M


20180418102701842.png


如果使用命令方式,只在当前会话有效,建议修改配置:

show global variables like 'max_allowed_packet';
set global max_allowed_packet=268435456;
set global max_allowed_packet=1024*1024*256;

使用set global命令修改 max_allowed_packet 的值,重启mysql后会失效,还原为默认值。

如果不知道如何修改MySQL配置文件,在运行sql文件时,可以使用命令方式。


【2】Packet for query is too large

异常如下所示:

Packet for query is too large (1238 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3683) ~[mysql-connector-java-5.1.47.jar:5.1.47]


解决方案

Linux下修改my.cnf文件在[mysqld]下添加如下配置:

max_allowed_packet = 100M


如果是windows下则修改my.ini文件。

【3】sql_mode为ONLY_FULL_GROUP_BY的问题

 In aggregated query without GROUP BY, expression #32 of SELECT list contains nonaggregated columnXXXXX ' this is incompatible with sql_mode=only_full_group_by

这种模式的官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode, 通过这个 sql_mode 来保证, SQL语句 “分组求最值” 合法性的检查. 这种模式采用了与 Oracle、DB2 等数据库的处理方式。即不允许 select target list 中出现语义不明确的列。


对于用到 GROUP BY 的 select 语句, 查出来的列必须是 group by 后面声明的列, 或者是聚合函数里面的列有这样一个数据库的表。


临时方案-会话有效

set @@GLOBAL.sql_mode='';
set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

永久方案

mysql的配置文件中[mysqld]下添加如下配置

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"


【4】数据迁移自动去除转义问题

默认情况下,MySQL会自动给你去除转义的,这在有些情况下会出错。此时我们就可以给sql_mode添加上NO_BACKSLASH_ESCAPES 来避免。如果SQL是通过导入执行脚本的,那么设置全局级别。

-- 查询sql_mode配置
SELECT @@sql_mode;
-- 修改会话级别的sql_mode
SET SESSION sql_mode = '...,NO_BACKSLASH_ESCAPES';
-- 修改全局级别的sql_mode
SET GLOBAL sql_mode = '...,NO_BACKSLASH_ESCAPES';


【8】Windows下MySQL8.0.31突然启动不了 1053错误


一直在正常使用,早上打开电脑突然发现MySQL服务启动不了,一直提示1053错误。因为没有任何异常操作,故而推测可能与电脑系统更新有关。

这里给出自己实践的解决方案。服务-找到MySQL服务0右键属性-登录:




我这边是Janus(本机管理员)可以正常启动。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
数据可视化 Java 数据安全/隐私保护
食品生产管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
食品生产管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
|
10月前
|
存储 运维 关系型数据库
生产MySQL系统安装准备
生产MySQL系统安装准备
108 0
|
SpringCloudAlibaba 关系型数据库 MySQL
SpringCloud Alibaba学习(四):Linux版Nacos+MySQL生产环境配置
SpringCloud Alibaba学习(四):Linux版Nacos+MySQL生产环境配置
378 1
SpringCloud Alibaba学习(四):Linux版Nacos+MySQL生产环境配置
|
存储 数据采集 SQL
案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
|
SQL 缓存 JavaScript
NodeJS 后端开发 07 MySQL数据库连接池开发生产应用
前篇 【NodeJS 后端开发 06 连接MySQL 】简单尝试了mysql js库来连接数据库。
242 0
NodeJS 后端开发 07 MySQL数据库连接池开发生产应用
|
MySQL Linux PHP
LNMP(Linux+Nginx+PHP+MySQL)生产源码部署实战
日常工作中,部署Nginx+PHP是非常普通的一个场景,如果有一个最佳实践,每次可以直接复制粘贴就好了。本文正是完全生产实践的方式。Nginx和PHP均推荐使用源码安装,MySQL推荐直接使用官方提供编译好的二进制文件,性能是最佳的,除非你可以非常专业的进行MySQL编译的定制。
1286 0
LNMP(Linux+Nginx+PHP+MySQL)生产源码部署实战
|
关系型数据库 MySQL
mysql 72GB生产环境配置
64GB的,innodb_buffer_pool_size 40GB [client] port = 3306 socket = /tmp/mysql.sock [mysqld] server-id = 22 port = 3306 user = my...
1046 0

推荐镜像

更多