Mysql占用服务器CPU过高
通过命令行 top 查询,可以明显看到mysql占用过高
命令行进入mysql 使用以下命令查看具体
SHOW FULL PROCESSLIST\G
查询中Group问题
mysql由5.6.50升级至5.7.23
查询语句中曾包含group的,出现报错。经查询是由于 MySQL 的 ONLY_FULL_GROUP_BY 模式引起的。该模式要求在使用 GROUP BY 语句时,所有选择的非聚合列必须出现在 GROUP BY 子句中,或者使用聚合函数。
这就出现一个很尴尬的问题,需要在group语句中,所有字段都增加concat,而无法满足我们的需求。
解决方法:
$this->db->query("SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))");
暂时禁用 ONLY_FULL_GROUP_BY
Mysql修复
老版本的mysql数据表类型为MyISAM
新版本为InnoDB
phpcms中数据表类型为MyISAM
而项目在生产环境中偶尔会遇见如服务器存储满,内存不足等问题。导致mysql中对应的表损坏丢失,在navicat中无法查看该表。
修复方法:
- 命令行修复
在navicat中查询语句输入 repair table '表名' 进行修复
如:
repair table v9_log
phpcms后台中修复
进入后台->进入扩展->进入数据库工具->选择对应数据库->找到对应表单点击修复