刚安装的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
相关推荐
霖霖总总24 分钟前
[小技巧19]MySQL 权限管理全指南:用户、角色、授权与安全实践
数据库·mysql·安全
heartbeat..5 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据7 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦8 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
myzshare8 小时前
实战分享:我是如何用SSM框架开发出一个完整项目的
java·mysql·spring cloud·微信小程序
YMatrix 官方技术社区9 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录9 小时前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong10 小时前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
墨笔之风10 小时前
java后端根据双数据源进行不同的接口查询
java·开发语言·mysql·postgres
欧亚学术10 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表