1)mysql导入较大sql文件,出现MySQL server has gone away
官方解释是适当增大 max_allowed_packet 参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理
查看max_allowed_packet的值
解决:
a)临时调整
b)永久调整
2) 使用导入命令进行数据导入的时候, 出现 "\n" "\" 字符的时候,无法入的问题
需要指定导入的字符集,统一字符集
3) SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81
这是字符集不匹配导致,mysql不能识别4个字节的utf8编码的字符,这应该也是问题的根源。☺、��、类似于这种4个字节,将对应字符类型换成将对应的数据类型改为utf8mb4类型,同时连接类型也要改成utf8mb4_general_ci
注意: utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。select version();
4) mysql5.7报错this is incompatible with sql_mode=only_full_group_by(注意点: 添加到mysqld下面)
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
解决:
5)Mysql删除表提示Cannot truncate a table referenced in a foreign key constraint解决办法
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子句中为更新指定目标表。
解决:添加临时表,多一层查询
7) mysql报错:1030, 'Got error 28 from storage engine'
出现这个问题, 一般都是因为磁盘已经占满, 没有可以存储的空间导致的错误
发现了pm2日志文件占满导致于是果断删除日志文件, 但是发现磁盘并没有空出大小,
原因: 在linux系统中, 通过rm删除文件, 只是将他从文件系统的目录结构上解除链接(unlink),如果文件在删除时候是被打开的(有一个进程中只能在使用这个文件, 文件被进程锁定或者进程与智斗向文件写数据), 那么进程将仍然可以读取改文件, 也就石说没有删除掉文件在读取状态, 所以磁盘空间一致都被占用
一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后。
文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除文件后,空间还没释放,就是因为有进程还在一直向这个文件写入内容,导致虽然删除了文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了。
解决:
a)通过lsof|grep deleted命令获取已经被删除但是仍然被应用程序占用的文件列表, 然后kill掉,需要注意的是:如果有很多进程都在使用所删除文件,那么采用第1种方式kill进程就有点麻烦了,而且风险也比较大。
因为kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。必须要确定不会对运行中的进程造成影响时才能使用,应用程序对这种方式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题。
b)可以重启系统, 但是并不是一个好的办法
c)比较好的处理方式是, 在线清空文件
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配置文件
3) 如果不存在目录则创建,启动服务
注意: 启动mysql的时候,要sudo 最高权限,否则会出现创建不成功的情况
4) 有可能连接指定的ip不支持, 例如之前使用的localhost无法进行连接, 而使用127.0.0.1进行连接,即可
9)Mysql ERROR 1067: Invalid default value for ‘date’
原因: 这是因为sql_mode的设置, 可以查看下设置信息 select @@sql_mode;
解决: 需要将该设置项删除去掉即可
10)今天发现数据库中某个表被删除了,我重新创建这个表 但是发生错误,[ERR] 1813 - Tablespace '.....' exists.错误
然后按照网上的操作 将datadir中的数据库对应的表文件ibd进行删除, 但是删除之后 发现还是无法正常创建这个文件, 之前的这个文件又恢复了, 这是因为 mysql进程还是被占用, 导致无法删除数据原文件
解决:修改数据表引擎类型,只是做查询操作够了
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;