MySQL错误处理记录

MySQL日志时间的时区不对

# 查看当前时间
select now();

# 查看时区设置信息
show variables like "%time_zone%";

# 日志采用的时区log_timestamps,一般是UTC
SHOW global variables like 'log_timestamps';

# 临时设置为系统时间
set global log_timestamps=SYSTEM;

永久生效需要个性my.cnf文件,加上log_timestamps参数

[mysqld]
log_timestamps = SYSTEM

"select command denied to user root"

mysql 报错

问题原因:一般在给指定用户配置指定库权限时,未开放对整个服务的select权限。 解决办法:找到mysql数据库下的user表,把对应的用户权限修改为'Y' 例如:select_priv


mysql 配置文件设置最大链接数max_connections不生效

1、临时设置最大链接数为1000,重启mysql后 会变成默认值151.

2、永久性修改最大链接数为1000,需要修改配置文件 linux只要修改MySQL配置文件my.ini my.cnf的参数max_connections,将其改为

ubuntu 需要修改/etc/mysql/mysql.conf.d/mysqld.cnf ,将其改为

3、奇怪的是重启完成之后,数据库中最大链接数变成了214,我当时以为设置写错了,换成了500,发现还是214,在换成200,最大链接数竟然变成了200。说明配置是生效了,还有其他问题。 解决办法

修改 ulimit 值,下面是永久生效

临时生效的设置方式

打开文件最大的数量, 更改 MySQL 在 Linux 的最大文件描述符限制,编辑 /usr/lib/systemd/system/mysqld.service 文件,在文件最后添加: ubuntu16.04 下面位于:/lib/systemd/system/mysql.service,可以通过find 命令查找

保存后,执行下面命令,使配置生效


Unknown table 'column_statistics' in information_schema

如果使用MySQL 8.0+版本提供的命令行工具mysqldump来导出低于8.0版本的MySQL数据库到SQL文件,会出现错误

因为早期版本的MySQL数据库的information_schema数据库中没有名为COLUMN_STATISTICS的数据表。

解决问题的方法是,使用8.0以前版本MySQL附带的mysqldump工具,最好使用待备份的MySQL服务器版本对应版本号的mysqldump工具,mysqldump可以独立运行,并不依赖完整的MySQL安装包,比如在Windows中,可以直接从MySQL安装目录的bin目录中将mysqldump.exe复制到其他文件夹,甚至从一台电脑复制到另一台电脑,然后在CMD窗口中运行。


mysqldump: Couldn't execute 'show events': Access denied for user 'root'@'%' to database 'performance_schema' (1044)

MySQL 5.6.40

在备份命令中加上如下参数 --skip-events


1146 - table 'performance_schema.session_variables' doesn't exist

mysql 5.6 通过Yum升级到5.7后,远程连接提示

解决办法


“ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.”

mysql 5.6.45 新建索引报错

**原因:**由于MySQL的InnoDB引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现该问题。

解决方法:将innodb_file_format相关配置改成下面值,然后重新创建该表。

如果还不行,创建表时指定表的Row FormatDynamicCompressedROW_FORMAT=DYNAMICROW_FORMAT=COMPRESSED

如果表已创建可用如下语句修改表的Row Format

执行以下SQL语句,确认Row_format值是不是DYNAMICCOMPRESSED


Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

MySQL 5.7.31

mysqldump 备份时提示

这是因为mysqldump默认是不备份事件表的,加上下面的参数即可


ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

mysql 5.7.24

修改my.ini


--initialize specified but the data directory has files in it. Aborting.


Specified key was too long; max key length is 767 bytes

mysql 5.6.45

先看一下以下信息是否如下所示

如果不是,则通过以下命令临时调整

另外还要修改为ROW_FORMAT=DYNAMIC 如果是新建表,则在创建语句后加上ROW_FORMAT=DYNAMIC

如果是执行ALTER时遇到的该问题,则通过以下命令调整


ERROR 1292 (22007): Truncated incorrect DOUBLE value: ''

问题: 更新字段时,提示该错误

可能是某个字段的值看起来像数字但实际是文本类型而没有用引号引起来


Duplicate entry '1233869' for key 'PRIMARY'

应该是自增主键1233869这一条信息插入未完成服务关闭事务未回滚,导致后面再次自增插入时插入重复, 解决办法1:手动将这个值+1跳过错误的那一条


mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table TABLE_NAME at row: 1791140

在备份的命令中加上--max_allowed_packet=512M即可


服务器硬盘空间不足,重启失败,导致部分报如下错误需要修复。


ERROR 2026 (HY000): SSL connection error: unknown error numberMYSQL开启了SSL连接,命令行无法登录

在命令行登录信息后面加上 --ssl-mode=DISABLED--ssl=0


mysql中count(*)information_schema.tables结果值不同

导致统计信息不准确的原因是什么呢?其实是MySQL 8.0为了提高information_schema的查询效率,将视图tablesstatistics里面的统计信息缓存起来,缓存过期时间由参数information_schema_stats_expiry决定,默认为86400s

要查询准确的行数,还是要使用 count(*)来查询。批量的话可以用下面的方法来生成批量查询语句


mysql federated 引用其它库的表时,做主从同步时,只能在源库更新这张表,不能在引用的位置更新;因为在引用位置更新时就已经对源库进行了操作,从库去同步时源库已经被修改,再做同样的操作会导致从库崩溃,陷入无限重启失败的情况。

临时解决办法,在主库备份该表完整数据,在从库使用replicate_ignore_db=DBNAME临时忽略对于该引用库的同步操作。等从库可以正常启动后再去修改配置文件去掉该配置并重启从库,然后在主库删除引用库的整个库(为了保证数据的完整),再导入之前备份的数据。


MySQL server version for the right syntax to use near 'REMOTE

这个错误是MySQL语法错误,具体的错误消息是指向 REMOTE 关键字。

在你的SQL语句中,有一行如下定义:

这里的 USING REMOTE 是不合法的。MySQL中,对于主键(PRIMARY KEY)的定义,没有 USING REMOTE 这样的关键字或者选项。所以,当MySQL解析到这一部分时,会抛出语法错误。

正确的主键定义方式通常如下:


ERROR 1045 (28000): Access denied for user 'app'@'192.168.x.x' (using password: YES)


ERROR: mysqld failed while attempting to check config command was: "mysqld --verbose --help --log-bin-index=/tmp/tmp.ci5irEMp9E"

使用docker-compose运行mysql 5.6 。重启容器后无法正常启动。

解决方法,修改yaml文件,增加ulimits配置。

最后更新于