欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL之使用过程中报错及处理记录(持续更新)

程序员文章站 2022-06-28 17:23:51
一、博文初衷此博文初衷是记录自己在使用mysql过程中遇到的问题及处理方法进行记录,以便自己在以后遇到同样的问题的时候可以在此处快速找到答案。也供广大网友参考,系统能够提供点滴帮助。二、报错及处理记录1、执行视图迁移的时候报错:1449 The user specified as a definer (‘root’@’%’) does not exist原因:新库里面没有视图定义者root@%这个账户解决方法:创建改账户或者修改视图定义者修改视图定义者可以参考修改视图定义者https://b...

一、博文初衷

此博文初衷是记录自己在使用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

MySQL之使用过程中报错及处理记录(持续更新)

原因: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;
MySQL之使用过程中报错及处理记录(持续更新)

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

MySQL之使用过程中报错及处理记录(持续更新)

原因:开发环境执行正常的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”;
MySQL之使用过程中报错及处理记录(持续更新)
解决方案:修改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.sqlMySQL之使用过程中报错及处理记录(持续更新)

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