MySQL之常见错误
1)mysql导入较大sql文件,出现MySQL server has gone away
ERROR (HY000) at line in file: 'E:\xampp\htdocs\SsCpc\djm.sql': MySQL server has gone away
No connection. Trying to reconnect...
官方解释是适当增大 max_allowed_packet 参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理
查看max_allowed_packet的值
show global variables like 'max_allowed_packet'
解决:
a)临时调整
set global max_allowed_packet=
b)永久调整
修改配置文件 my.cnf/my.ini
max_allowed_packet=256M
2) 使用导入命令进行数据导入的时候, 出现 "\n" "\" 字符的时候,无法入的问题
需要指定导入的字符集,统一字符集
#登陆时,指定字符集
mysql -uroot -p123456 --default-character-set=utf8mb4 >> source import.sql
3) SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81
这是字符集不匹配导致,mysql不能识别4个字节的utf8编码的字符,这应该也是问题的根源。☺、��、类似于这种4个字节,将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci
、检查数据库字符集; 、检查数据表字符集; 、检查字段字符集; 、连接数据库的字符集; 将以上字符集改为utf8mb4
show variables like 'character%';
set character_set_database=utf8;
set character_set_server=utf8;
注意: utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。select version();
4) mysql5.7报错this is incompatible with sql_mode=only_full_group_by(注意点: 添加到mysqld下面)
[Err] - Expression # of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
select @@global.sql_mode;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
解决:
去掉ONLY_FULL_GROUP_BY,重新设置值。
[mysqld]
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
5)Mysql删除表提示Cannot truncate a table referenced in a foreign key constraint解决办法
删除之前先执行删除外键约束
SET foreign_key_checks = 删除完之后再执行启动外键约束
SET foreign_key_checks =
6)1093 - You can't specify target table
分析:对同一张表进行操作,先查询,再将查询出来的数据作为条件去修改这张表,会报错 1093 - You can’t specify target table ‘XXXX’ for update in FROM clause, Time: 0.001000s。意思是说:无法在FROM子句中为更新指定目标表。
解决:添加临时表,多一层查询
UPDATE nl_media
SET top_read_count = fans_count * 0.02,
other_read_count = fans_count * 0.02
WHERE
id IN ( SELECT id FROM (SELECT id FROM nl_media WHERE fans_count <> AND top_read_count = ) t);
7) mysql报错:1030, 'Got error 28 from storage engine'
出现这个问题, 一般都是因为磁盘已经占满, 没有可以存储的空间导致的错误
使用df -h Filesystem Size Used Avail Use% Mounted on
devtmpfs 911M 911M % /dev
tmpfs 920M 4.9M 915M % /dev/shm
tmpfs 920M 904K 919M % /run
tmpfs 920M 920M % /sys/fs/cgroup
/dev/vda1 50G 35G 12G % /
tmpfs 184M 184M % /run/user/
tmpfs 184M 184M % /run/user/
tmpfs 184M 184M % /run/user/ 进入到大的文件目录中
df -sh *
查看目录下各个文件的大小 进入目录中, 查看文件(按照从大到小排序)
ls -lhS
8)ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
启动mysql服务出现的错误
解决:
1) 查看sock文件是否存在:/var/run/mysqld/mysqld.sock
2) 如果文件不存在,则mysql配置文件
vim /etc/mysql/my.cnf [mysqld]
max_connections= !includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/ mysql的配置在/etc/mysql/mysql.conf.d目录下的mysqld.cnf文件
查看相关信息:
bind-address = 127.0.0.1
socket = /var/run/mysqld/mysqld.sock
3) 如果不存在目录则创建,启动服务
sudo mkdir -p /var/run/mysqld
sudo chown mysql /var/run/mysqld/
sudo service mysql restart
注意: 启动mysql的时候,要sudo 最高权限,否则会出现创建不成功的情况
最新文章
- 浅谈BFC
- phpcms v9 源码解析-1 index.php
- cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。
- Java语言基础(三)
- linux下实现rm()函数删除文件或目录
- WebService的相关使用
- Haskell 几乎无疼痛入门指南
- 《C语言及程序设计初步》网络课程主页
- SQL Server 2008 2005删除或压缩数据库日志的方法
- 前端轻量级web进度条 – Nprogress &; nanobar
- Ansible系列(七):执行过程分析、异步模式和速度优化
- BZOJ 3781: 小B的询问 [莫队]
- Docker使用问题记录贴
- sync.Pool的使用
- Inception介绍(MySQL自动化运维工具)
- iOS 点击返回键崩溃的未解之谜
- JDK类集框架实验(ArrayList,LinkedList,TreeSet,HashSet,TreeMap,HashMap)
- 一次VB汇编中看-溢出计算
- Jenkins Error cloning remote repo &#39;origin&#39;, slave node
- solidity 语法学习