刚安装的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
相关推荐
像风一样!31 分钟前
MySQL数据库如何实现主从复制
数据库·mysql
大白的编程日记.35 分钟前
【MySQL】数据库表的CURD(二)
android·数据库·mysql
友善的鸡蛋1 小时前
项目中执行SQL报错oracle.jdbc.OracleDatabaseException: ORA-00942: 表或视图不存在
数据库·sql·oracle
The best are water1 小时前
jeesite mybatis添加拦截器,推送指定表的变更数据到其他数据库
数据库·mybatis
api_180079054601 小时前
异步数据采集实践:用 Python/Node.js 构建高并发淘宝商品 API 调用引擎
大数据·开发语言·数据库·数据挖掘·node.js
怕什么真理无穷2 小时前
mysql server 9.4 windows安装教程(sqlyog 下载)
数据库
Olrookie2 小时前
MySQL运维常用SQL
运维·数据库·sql·mysql·dba
数据库生产实战2 小时前
ORACLE 19C ADG环境 如何快速删除1.8TB的分区表?有哪些注意事项?
数据库·oracle
blackorbird2 小时前
使用 Overpass Turbo 查找监控摄像头
运维·服务器·数据库·windows
IT永勇2 小时前
SQLite数据库基本操作
数据库·sqlite·嵌入式开发·增删改查·关系型数据库