Mysql报错合集--其他报错

2021-06-16 14:20:22 浏览数 (1)

使用select * from 表名 group 字段名时出现ERROR 1055

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘userdb.stu_info.name’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

修改/etc/my.cnf 添加一项代码 sql-mode=”STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER” 重启服务 systemctl restart mysqld

忘记了密码怎么做

vim /etc/my.cnf 添加

代码语言:javascript复制
skip-grant-tables=1

重启服务 systemctl restart mysqld

使用MySQL -uroot 回车登陆mysql。

导入提示data too long for column ..

修改字段类型大小(估计字段超了,建议调大一点;例子vartchar(48)改成varchar(100)) 格式:alter table 表 modify 字段名 类型…

导出报错

可能没有w权限 chmod mysql /目录/

mysql关闭后启动失败

查看日志,

2016-01-20T10:00:19.935795Z 0 [ERROR] Can’t start server: can’t create PID file: No such file or directory 160120 18:00:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

这说明mysql想创建pid文件,但是没有权限 所以无法启动

Mysql binlog 安全删除

如果你的 Mysql 搭建了主从同步 , 或者数据库开启了 log-bin 日志 , 那么随着时间的推移 , 你的数据库 data 目录下会产生大量的日志文件。

mysql-bin.000001、mysql- bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志 文件中,还包括每个语句执行的时间,也会记录进去的

下面来介绍几种解决方法:

  1. 如果你的数据库没有搭建主从同步这样的服务 , binlog 日志也不用的情况下 , 你可以将 /etc/my.cnf 文件下面行删除或注释掉

log-bin=mysql-bin

binlog_format=mixed

如果你需要这样的文件 , 那么建议你在主配置文件 /etc/my.cnf 中添加如下行 , 来限制 binlog 日志文件存在时间 , 过期自动删除

expire_logs_days = 7 # 只保留 7 天的日志文件

  1. 如果你直接得到一台服务器 , 上面的 binlog 日志已经影响到了磁盘空间 , 那么你将使用下面命令清除(登录mysql上执行)

mysql> reset master; # 清空所有 binlog 文件

  1. 如果你的得到的服务器 , mysql 还做了主从同步 , 那么上面的命令就不适合你了 , 因为 binlog 文件删除过多的话 , 会导致数据不同步

mysql> show slave status; # 你首先要来 slave 上查看从库读 binlog 到 了哪里

Master_Log_File: mysql-bin.000009 # 我们可以看到是 mysql-bin.000009

mysql> purge master logs to 'mysql-bin.000009'; # 我们可以在 master 中执行这条指令 , 将 binlog 文件删除至 mysql-bin.000009 前

mysql> purge master logs before '2014-11-18 00:00:00'; # 将 binlog 文件删除至此日期前

0 人点赞