刚安装的MySQL使用Navicat操作数据库遇到的问题

刚安装的MySQL使用Navicat操作数据库遇到的问题

一、编辑连接保存报错

连接上了数据库,编辑连接保存报错,如下图:

解决办法:

重启Navicat。

二、打开数据表很慢

第一次打开数据表时速度还能接受,过几分钟再次打开就变得很慢很慢,且查询很少的数据都很耗时。比如我只想查询用户表中的十条数据,竟然查了8秒。

解决办法:

打开关闭数据库,编辑数据库连接,默认是240秒,我这里改为了30秒,还觉得慢可以改为0秒。

这样就会让数据库连接保持随时待命的状态,不会出现因为间隔几分钟没有打开数据表,再次打开时变得很慢很慢了的情况了。

再次查询用户表的10条数据

三、MySQL的进程出现大量"sleep"状态的进程

这可能是刚安装的MySQL还没有优化,查询MySQL的连接超时时间

sql 复制代码
show variables like 'wait_timeout';
sql 复制代码
show variables like 'interactive_timeout';

解释:

wait_timeout:用于指定服务器等待客户端发送命令的时间的上限。

interactive_timeout:用于指定MySQL服务器在等待客户端发送命令的时间后关闭非交互式连接的超时时间。

MySQL默认的连接超时时间是8小时,太长了,没有进行数据操作的时候应该释放资源,可以将超时时间调小一些,注意需要上面两个参数同时设置才能生效。

打开MySQL的配置文件

powershell 复制代码
vim /etc/my.cnf

在"mysqld"中加入如下配置

powershell 复制代码
#减少超时时间,避免使用"SHOW PROCESSLIST"命令出现很多"sleep"状态的进程,这里设置为120秒
wait_timeout=120
interactive_timeout=120

这是我的

然后重启MySQL

powershell 复制代码
service mysql restart

再次查询MySQL的进程

sql 复制代码
SHOW PROCESSLIST

可以看到前面的很多"sleep"状态的进程已经不见了。

四、执行sql脚本报错,部分表导不进去

我的问题是这样的,新安装的MySQL从Navicat执行sql脚本,结束时出现失败的错误,看一下执行结束后的数据库,大部分表都导入了,只是部分数据表没能导入。

这是导入时的报错

一开始也没看出那里的问题,于是将就着用,等项目连接上的时候报缺少某个数据表,看了一下数据库中还真没有,就把没导入的数据表从原数据库中单独导出sql文件,再单独导入,结果也是报类似的错

看来导入数据库的时候就是这些表出的问题了。

然后就想着既然sql脚本有问题,那我通过执行sql的形式导入,这些应该总行了吧,但是报如下错:

Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

看报错提示似乎字段的长度不够,需要改为"TEXT"或者"BLOB"类型,我直接把我内容比较多的字段类型改为"LONGTEXT",这样应该承得下了把,但执行sql时还是报这个错。

后面发现这是InnoDB 存储引擎的一个配置参数"innodb_strict_mode",是否采取严格模式的问题,只要把它关了就可以导入了。

解释:

innodb_strict_mode 是 MySQL 中 InnoDB 存储引擎的一个配置参数,它用于控制 InnoDB 存储引擎在处理某些可能的不规范或错误的数据时是否采取严格模式,默认是开启。

关闭采取严格模式的办法如下:

在"mysqld"下加入如下配置

powershell 复制代码
#处理 MySQL导入数据库1118错误解决方案[ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB
innodb_strict_mode=0

保存退出,再重启MySQL

powershell 复制代码
service mysql restart

删除原来的数据库,再次导入

成功。

五、当前MySQL配置文件

powershell 复制代码
[mysqld]
port=3306
basedir=/usr/local/mysql/mysql-8.0.35  # MySQL根目录
datadir=/usr/local/mysql/mysql-8.0.35/data/  # MySQL的data目录
socket=/tmp/mysql.sock
character-set-server=UTF8MB4
symbolic-links=0


#配置大小写不敏感,配合初始化mysql时使用
lower_case_table_names=1


#减少超时时间,避免使用"SHOW PROCESSLIST"命令出现很多"sleep"状态的进程,这里设置为120秒
wait_timeout=120
interactive_timeout=120


#解决"java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list,references column"
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

#处理 MySQL导入数据库1118错误解决方案[ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB
innodb_strict_mode=0
相关推荐
名字还没想好☜8 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
ltl9 小时前
Serverless 数据库弹性理论:Neon 与 Aurora Serverless v2
数据库
Dxy123931021610 小时前
Python 如何使用 MySQL 的事务
python·mysql
marvelyu13 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算13 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
zd20057214 小时前
海洋微生物数据库
数据库·宏基因组
海上小飞龙14 小时前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式
xiaoye-duck14 小时前
MySQL 表约束全解:从基础约束到外键关联规则
数据库·mysql
Hammer_Hans15 小时前
DFT笔记98
java·开发语言·数据库
迪康Defender15 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他