mysql连接报错3167_MySQL之使用过程中报错及处理记录(持续更新)

一、博文初衷

此博文初衷是记录自己在使用mysql过程中遇到的问题及处理方法进行记录,以便自己在以后遇到同样的问题的时候可以在此处快速找到答案。也供广大网友参考,系统能够提供点滴帮助。

二、报错及处理记录

1、执行视图迁移的时候报错:1449 The user specified as a definer (‘root’@’%’) does not exist

原因:新库里面没有视图定义者root@%这个账户

解决方法:创建改账户或者修改视图定义者

修改视图定义者可以参考修改视图定义者

https://blog.csdn.net/carefree2005/article/details/109812943

2、数据库错误日志告警page_cleaner: 1000ms intended loop took 4897ms

04fb740ceb8230a063efa906710b8657.png

原因:innodb_buffer_pool_size缓存设置偏小,导致sql执行时间慢

解决方法:

调大 innodb_buffer_pool_size值的大小,5.7以上版本可以在线调整

>set global innodb_buffer_pool_size=8589934592;

还需要修改my.cnf文件

innodb_buffer_pool_size = 8G

3、mysqldump备份sql系统库时报错ERROR 3167 (HY000)

报错信息如下:

mysql> select * from information_schema.global_status limit 3;

ERROR 3167 (HY000): The ‘INFORMATION_SCHEMA.GLOBAL_STATUS’ feature is disabled; see the documentation for ‘show_compatibility_56’

原因:从mysql5.7.6开始information_schema.global_status已经开始被舍弃

解决方案:为了兼容性,此时需要打开 show_compatibility_56

>set global show_compatibility_56=on;

870f7f7f0d082875aa01080d1d31a424.png

4、启动mysql报错“Bind on TCP/IP port: Address already in use”

原因:端口被占用,看err日志如下

#tail -f /database/umc/data/umc.err

141106 10:37:14 [ERROR] Can’t start server: Bind on TCP/IP port: Address already in use

141106 10:37:14 [ERROR] Do you already have another mysqld server running on port: 3306 ?

解决方案:找到占用3306端口进程并kill掉

#ps -ef |grep mysql

#netstat -tnpl |grep 3306

通过如上命令未发现mysql数据库进程

使用命令:netstat –apn |grep 3306

查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name

#netstat -apn | grep 3306

tcp 0 0 ::ffff:192.168.65.211:3306 ::ffff:192.168.65.211:3306 ESTABLISHED 18148/java

使用kill命令杀掉干掉有连接mysql数据库端口的进程服务,然后重启mysql,正常启动。

5、执行update sql语句时报错ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

75bb58c0b788a7d8d51cc3747b0bebb1.png

原因:开发环境执行正常的sql语句在测试环境执行报错,测试环境数据库版本为5.6,开发数据库版本为5.7,innodb_large_prefix参数默认值不一样

解决方案:mysql版本为5.6,innodb_large_prefix参数值默认为OFF,测试环境mysql版本为5.7,innodb_large_prefix参数默认为ON。wx_list表ID字段设置为200字符,字符集为utf8mb4,单个字符长度4字节,200*4=800字节,超过了767字节。实际微信ID仅为36字符,将该字段调整为100字符即可。或者将innodb_large_prefix参数修改为on。

>set global innodb_large_prefix=1;

6、MYSQL导入导出CSV格式文件数据执行提示错误(ERROR 1290)

报错信息:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement.

原因:在安装MySQL的时候限制了导入与导出的目录权限,解压安装默认为NULL,RPM安装默认值为/var/lib/mysql-files/

#SHOW VARIABLES LIKE “secure_file_priv”;

14937ab99bc99f62e22909a4195afa5f.png

解决方案:修改secure_file_priv为空或者指定目录,然后设置导出文件路径为指定目录。

(1)NULL,表示禁止。

(2)如果value值有文件夹目录,则表示只允许该目录下文件(PS:子目录也不行)。

(3)如果为空,则表示不限制目录。

7、mysqldump时报错Error 2020: Got packet bigger than ‘max_allowed_packet’ bytes

原因:max_allowed_packet设置参数小于表格最大单行值

解决方案:使用myqldump备份时指定–max_allowed_packet值

mysql> show variables like ‘%max_allowed_packet%’;

±-------------------------±-----------+

| Variable_name | Value |

±-------------------------±-----------+

| max_allowed_packet | 1073741824 |

| slave_max_allowed_packet | 1073741824 |

±-------------------------±-----------+

2 rows in set (0.00 sec)

查询结果为max_allowed_packet值已设置为1G,需调整更大满足要求

#mysqldump -uroot -p --max_allowed_packet=2G -B dbname >dbname.sql

897c99ddf03399e2008eb3fbf95b17f9.png

8、执行批量插入语句时报错ERROR 1436 (HY000)

报错信息:ERROR 1436 (HY000): Thread stack overrun: 103022 bytes used of a 231022 byte stack, and 128000 bytes needed. Use ‘mysqld --thread_stack=#’ to specify a bigger stack.

原因:Thread_stack:每个连接线程被创建时,MySQL给它分配的内存大小。thread_stack值默认为128K,小于需求。

解决方案:设置thread_stack=512K

9、在线调整参数thread_stack时报错

报错信息:ERROR 1238 (HY000): Variable ‘thread_stack’ is a read only variable

原因:thread_stack参数为只读,需要在配置文件中修改

解决方案:

#vim my.cnf修改数据库配置文件将并重启数据库

thread_stack = 2M

10、(待续)

本文地址:https://blog.csdn.net/carefree2005/article/details/111030156

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值