Mysql报错合集
- 一.链接报错
- 客户端连接mysql出错
- 链接客户端出错
- 交互登陆mysql出现warning警告Using a password
- 导入数据到数据库报错ERROR 1050
- 登陆数据库提示-bash: !@: event not found
- ACCess Denied for user(using password:YES)
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- Too many connections
- Starting MySQL... ERROR! The server quit without updating PID file (/ops/logs/mysql/mysql.pid).
- 远程连接ERROR 2003 (HY000)
- 二.日志报错
- ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.
- ERROR 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again
- ERROR 1118 (42000): Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
- 三.其它报错
一.链接报错
客户端连接mysql出错
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解答:
因为开启了使用sock的登陆
mysql -u root --socket=/ops/data/mysql/mysqld.sock -p
链接客户端出错
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
账号密码正确的,但是你用了localhost登陆,记录中test没有配置localhost的,所以要在mysql中创建一个 test@'localhost'的账户
ERROR 1045 (28000): Access denied for user 'maxscale'@'web1' (using password: YES)
这次是提示用web1登陆的,因为我加-h然后ip,就要在mysql中创建一个 test@'web1'的账户
交互登陆mysql出现warning警告Using a password
Warning: Using a password on the command line interface can be insecure.
解答:
使用
mysql_config_editor set --login-path=local --host=192.168.1.190 --user=zabbix --password
然后输入zabbix用户的密码
登陆时使用:
mysql --login-path=local -e "show databases;"
有sockfang方式登陆使用:
mysql --login-path=local --socket=/ops/data/mysql/mysqld.sock -e "show databases;"
删除
mysql_config_editor remove --login-path=remote
mysql_config_editor print --all
导入数据到数据库报错ERROR 1050
ERROR 1050 (42S01) at line 1: Table 'users' already exists
解答:
导入的数据在数据库中存在了,有可能是重复导入。
登陆数据库提示-bash: !@: event not found
-bash: !@: event not found
解答:
密码中带 !@ 需要 -p'123!@' 就好了
ACCess Denied for user(using password:YES)
解答:
没有你所输入的账户,可以跳过密码验证后创建一个账户再登陆
5.登陆mysql
Access denied for user 'qpolar'@'localhost' (using password: YES)
解答:
1.可能没这个用户,还有可能这个用户授权的是%,所以需要加 -h指定当前机器的ip
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
一种情况 mysql没启动
第二种 mysql连接默认为必须sock登陆,所以登陆需要添加--socket=xxx,或者更改/etc/my.cnf
Too many connections
这是因为mysql链接数太多了,使用mysql客户端命令或者图形化链接,一个就是一个链接数,如果有程序链接后没有关闭链接(close),将会导致占用一个连接数,大量的话将会沾满。不过会保留1个链接用于root登陆
用root登陆mysql后用如下命令查看,可以看到Command哪里有大量sleep,并且翻到最后,可以看到链接数有200多,已经满了。
show processlist
这种情况下,全是sleep(没有任何操作,但是占用一个链接),那就在my.cnf中添加如下,设置链接10秒没有动作将清理掉。
wait_timeout=10
如果不是大量sleep,而是正常的Query,那就证明连接数不够了
在my.cnf中添加如下,扩大链接数,不过最大也就1.6万多
max_connections=10000
Starting MySQL... ERROR! The server quit without updating PID file (/ops/logs/mysql/mysql.pid).
问题:
描述是mysql在没更新pid文件的情况下异常退出。意思是mysql异常退出了,并没有启动进程
查看日志发现如下:
130216 16:11:33 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
130216 16:11:33 [ERROR] Do you already have another mysqld server running on port: 3306 ?
130216 16:11:33 [ERROR] Aborting
意思是3306端口被占用,你可以netstat -unltp | grep :3306
查看是否被占用。
如果没有呗占用,可以netstat -anptu | grep :3306
,一把可以看到有进程还在使用3306端口链接中,这个应该是一个长链接,一直不释放
可以看到后面显示时一个java程序再链接3306端口。pid号为12461,那就ps -aux | grep 12461
,终止这个程序,不终止无法释放
停止程序后,过一会再netstat -anptu | grep :3306
,就可以看到端口释放了,再启动mysql就行了
远程连接ERROR 2003 (HY000)
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.xxx.xxx' (113)
解答:
1.需要开放mysql为0.0.0.0,然后建立可远程账号%
2.查看/etc/my.cnf
注释bind_address=127.0.0.1或者skip_networking
systemctl disable firewalld
开机不自启
systemctl stop firewalld
关闭防火墙
二.日志报错
ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.
- 错误描述:MySQL开启GTID后不支持此类语法,原因是弱事务,ddl和dml放一起了,无法保证事务的原子性。
- 解决办法:(1)将gtid关闭。(2)create table select语句拆成create table t like t1;insert into t select * from t1;
ERROR 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again
- 问题描述:max_binlog_cache_size配置值太小,导致更新失败。
- 解决办法:加大max_binlog_cache_size的配置,或者将隔离级别改成rr且将binlog format改成mixed。
如果是rc模式,mixed的话也会记录成row,原因是和gap lock有关,如果innodb_locks_unsafe_for_binlog参数设置为1就不会了(关闭gap lock,但是是read only属性,即要重启mysqld)
ERROR 1118 (42000): Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
- 问题描述:创建表异常,原因是char/varchar字段的总长度超过4030。
- 解决办法:关闭严谨的检查机制。set global innodb_strict_mode=0;但是不建议这么做,最好还是遵循提示建议,将char或者varchar改成text或者blog,或者将大字段拆解成独立表
从MySQL5.5.X版本开始,你可以开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能。开启此功能后,当创建表(CREATE TABLE)、更改表(ALTER TABLE)和创建索引(CREATE INDEX)语句时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮里。
三.其它报错
二.使用select * from 表名 group 字段名时出现ERROR 1055
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userdb.stu_info.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
修改/etc/my.cnf
添加一项代码
sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"
重启服务 systemctl restart mysqld
忘记了密码怎么做
vim /etc/my.cnf
添加
skip-grant-tables=1
重启服务
systemctl restart mysqld
使用MySQL -uroot 回车登陆mysql。
导入提示data too long for column ..
修改字段类型大小(估计字段超了,建议调大一点;例子vartchar(48)改成varchar(100))
格式:alter table 表 modify 字段名 类型...
导出报错
可能没有w权限
chmod mysql /目录/
mysql关闭后启动失败
查看日志,
2016-01-20T10:00:19.935795Z 0 [ERROR] Can't start server: can't create PID file: No such file or directory
160120 18:00:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
这说明mysql想创建pid文件,但是没有权限 所以无法启动
Mysql binlog 安全删除
如果你的 Mysql 搭建了主从同步 , 或者数据库开启了 log-bin 日志 , 那么随着时间的推移 , 你的数据库 data 目录下会产生大量的日志文件。
mysql-bin.000001、mysql- bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志 文件中,还包括每个语句执行的时间,也会记录进去的
下面来介绍几种解决方法:
- 如果你的数据库没有搭建主从同步这样的服务 , binlog 日志也不用的情况下 , 你可以将 /etc/my.cnf 文件下面行删除或注释掉
log-bin=mysql-bin
binlog_format=mixed
如果你需要这样的文件 , 那么建议你在主配置文件 /etc/my.cnf 中添加如下行 , 来限制 binlog 日志文件存在时间 , 过期自动删除
expire_logs_days = 7
# 只保留 7 天的日志文件
- 如果你直接得到一台服务器 , 上面的 binlog 日志已经影响到了磁盘空间 , 那么你将使用下面命令清除(登录mysql上执行)
mysql> reset master;
# 清空所有 binlog 文件
- 如果你的得到的服务器 , mysql 还做了主从同步 , 那么上面的命令就不适合你了 , 因为 binlog 文件删除过多的话 , 会导致数据不同步
mysql> show slave status;
# 你首先要来 slave 上查看从库读 binlog 到 了哪里
Master_Log_File: mysql-bin.000009 # 我们可以看到是 mysql-bin.000009
mysql> purge master logs to 'mysql-bin.000009';
# 我们可以在 master 中执行这条指令 , 将 binlog 文件删除至 mysql-bin.000009 前
mysql> purge master logs before '2014-11-18 00:00:00';
# 将 binlog 文件删除至此日期前
Mysql报错合集的更多相关文章
- MySQL报错合集解决办法: server has gone away, @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON
server has gone away: 如下图 执行以下命令 show global variables like '%timeout%'; set global interactive_time ...
- mysql报错锦集
MySQL 启动报错 - ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/ ...
- Redis cluster 集群报错合集
目录 一.连接集群操作报错(error)MOVED 二.集群关闭后重启报错 三.Redis (error) NOAUTH Authentication required 四.Redis集群使用中突然挂 ...
- Jenkins 报错合集
目录 一.启动项目显示,没有接受许可之前不能够自动安装 二.明明配置了jdk但还是说找不到 三.jenkins-RestAPI调用出现Error 403 No valid crumb was incl ...
- vc++6.0各种报错合集(附:VC++6.0调出打印窗口的方法)
背景: 由于VC++6.0对于现在的我来说,只是一个工具,暂时没有太多的时间分配到这块去深究它,由于不明其原理,因此也只是在此把错误积累下来,以备下次相同错误出现时能快速排除,节省时间. 正文 一.出 ...
- Tomcat报错合集
1.java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start c ...
- python报错合集
哈喽,大家好呀 我又来啦,今天让我们来看看python中有哪些常见的异常报错吧 说到python中的报错,我们总是脑壳疼现在我们要学会去认识报错的类型 这样子,在我们出现报错的时候就可以知道报错的原因 ...
- ERRORS !MySQL 和 Javaweb 的报错合集
ERROR:1175. You are using safe update mode and you tried to update a table without a WHERE that uses ...
- 解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'(using password YES)
一.前言 今年疯狂迷上了开源,只要看到好的开源项目,就会不顾一切一股脑扎进去研究,五一期间发现一个很好的关于众筹的开源项目,但不巧,这个项目竟然是 PHP 写的,没学过 PHP,自然对这个开源项目毫无 ...
随机推荐
- 关于Java内存泄漏的介绍
翻译自这篇文章 Java一个最显著的优势就是它的内存管理.你只需要简单地创建对象,而Java垃圾收集器会负责内存的分配与释放.不过,事情并没有那么简单,因为在Java应用中时常会出现内存泄漏. 1. ...
- [bzoj5025]单调上升路径
由于题目的证明可以发现$ans\ge 2m/n \ge n-1$,于是大胆猜测答案就是n-1若n是奇数,则将边分为n组,每组(n-1)/2,如果同组内边没有交点,那么只需要每一组边一个权值区间,从每一 ...
- 文本分类:Keras+RNN vs传统机器学习
摘要:本文通过Keras实现了一个RNN文本分类学习的案例,并详细介绍了循环神经网络原理知识及与机器学习对比. 本文分享自华为云社区<基于Keras+RNN的文本分类vs基于传统机器学习的文本分 ...
- Codeforces 1137F - Matches Are Not a Child's Play(LCT)
Codeforces 题面传送门 & 洛谷题面传送门 考虑将一个点 \(x\) 的编号变为当前所有点编号最大值 \(+1\) 会对每个点的删除时间产生怎么样的影响.由于编号最大的点肯定是最后一 ...
- Codeforces 997E - Good Subsegments(线段树维护最小值个数+历史最小值个数之和)
Portal 题意: 给出排列 \(p_1,p_2,p_3,\dots,p_n\),定义一个区间 \([l,r]\) 是好的当且仅当 \(p_l,p_{l+1},p_{l+2},\dots,p_r\) ...
- Codeforces 870F - Path(数论+分类讨论+正难则反)
Codeforces 题目传送门 & 洛谷题目传送门 首先考虑 \(d(u,v)\) 是个什么东西,分情况讨论: \(u\not\perp v\),\(d(u,v)=1\) \(u\perp ...
- ss 显示socket状态
ss ===show socket用于显示socket状态 所有的TCP sockets 所有的UDP sockets 所有ssh/ftp/ttp/https持久连接 所有连接到Xserver的本地进 ...
- 数据分析体系 — 用户粘性的两个计算指标(DAU/MAU和月人均活跃天数)
很多运营都了解DAU(日活跃用户数)和MAU(月活跃用户数)的重要性,但在某些情况下这两个数值本身并不能反映出太多问题,这个时候就要引用到[DAU/MAU]的概念,即[日活/月活] 用户粘性的两个计算 ...
- Excel-电话号码隐藏某几个数为*,起到保护信息作用;
9.电话号码隐藏某几个数为*,起到保护信息作用: 方法一: =SUBSTITUTE(AG2,MID(AG2,4,5),"*****") 解释函数: MID(目标字符串,裁剪起始位置 ...
- ansible-playbook 编译安装nginx
mkdir /etc/ansible/roles/nginx/{files,templates,tasks,handlers,vars,default,meta} -pv └── nginx ├── ...