MySQL 提示:
1.
Lost connection to MySQL server at ‘waiting for initial communication packet’,system error:0
错误产生经过:
昨天试加速器试用,改了硬件信息,隔天上午数据库运行正常,下午重启后mysql连接时就出错了。
解决方法:
- 找到mysql安装目录下的
my.ini文件(我mysql安装目录是在D:\SP GAME),记事本打开my.ini,
找到[mysqld],在末尾添加一行:
skip-name-resolve
记得保存。
- 在“计算机管理-服务和应用程序-服务”找到
MySQL,
重启该服务。
2.
Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
重启MySQL服务
3. 2059错误
Authentication plugin ‘caching_sha2_password’ cannot be loaded : ***
原因
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
解决
1 | mysql -uroot -ppassword #登录 |
4. 1273错误
1273 - Unknown collation: ‘utf8mb4_0900_ai_ci’
情景
将mysql8.0的结构数据转储为sql文件,然后在mysql5.6运行时报错。
原因
编码排序规则不同,不止数据库,还有每张表。
解决
将sql文件内对应的编码排序规则,比如utf8mb4_0900_ai_ci,批量替换为mysql5.6能用的规则,比如utf8mb4_unicode_ci,然后再运行。
5. 1071 (42000) 错误
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
情景
高版本数据库向低版本数据库迁移时,修改InnoDB表字段长度时出现了此错误。
原因
错误是指超出索引字节的限制,并不是指字段长度限制。文档:
如果启用了系统变量innodb_large_prefix(默认启用,注意实验版本为MySQL 5.6.41,默认是关闭的,MySQL 5.7默认开启),则对于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引键前缀限制为3072字节。如果禁用innodb_large_prefix,则对于任何行格式的表,索引键前缀限制为767字节。
innodb_large_prefix将在以后的版本中删除、弃用。在MySQL 5.5中引入了innodb_large_prefix,用来禁用大型前缀索引,以便与不支持大索引键前缀的早期版本的InnoDB兼容。
对于使用REDUNDANT或COMPACT行格式的InnoDB表,索引键前缀长度限制为767字节。例如,您可能会在TEXT或VARCHAR列上使用超过255个字符的列前缀索引达到此限制,假设为utf8mb3字符集,并且每个字符最多包含3个字节。
尝试使用超出限制的索引键前缀长度会返回错误。要避免复制配置中出现此类错误,请避免在主服务器上启用enableinnodb_large_prefix(如果无法在从服务器上启用)。
适用于索引键前缀的限制也适用于全列索引键。
解决
启用系统变量
innodb_large_prefix,然后满足以下条件1: 系统变量innodb_large_prefix为ON
2: 系统变量innodb_file_format为Barracuda
3: ROW_FORMAT为DYNAMIC或COMPRESSED
第3条为可选项,sql如下:
1 | set global innodb_large_prefix=on; |
6. 时区错误
Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually.
原因
时区值无效
解决
1 | show variables like '%time_zone%'; |