服务器MySQL报错ERROR 1030 (HY000): Got error 28 from storage engine

当前位置:首页 » MySQL
In 笔记  @2018-05-22

正在家里看美剧在,同事微信call我表示所有接口都不行了,服务器貌似崩了。

查找原因

查看后发现是MySQL报错:

ERROR 1030 (HY000): Got error 28 from storage engine

一番google后发现是由于系统磁盘临时空间不足导致。
在服务根目录下运行:

[root@iZ****tecZ /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       40G   38G   16M 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm

可以看到已经磁盘已经占用100%了。

解决方案:

清理服务器,腾出空间来。
先找出哪些文件文件夹占用空间比较多,一步一步找到,一般是日志文件或者定时备份的文件压缩包比较占空间。

这里涉及到查找文件夹或者文件占用空间的比较有用的命令,记录一下:

[root@iZ****tecZ /]# du -hm --max-depth=2 | sort -nr | head -12
38053   .
34432   ./var
31423   ./var/www
1815    ./var/log
1579    ./bak20160908
1334    ./usr
1086    ./var/lib
972 ./bak20160908/geo12345
444 ./usr/share
416 ./lib
354 ./bak20160908/test
330 ./lib/modules
  • 命令du -hm --max-depth=2 | sort -nr | head -12这个命令的意思是目录下占用空间从大到小排序,列出前12个。
  • du -h --max-depth=2 /var/www/html这个命令可以列出/var/www/html目录下子文件夹和文件占用空间大小,深度--max-depth=2根据需要调节,表示子文件夹层数。
  • ll -lh当前文件夹下所有文件的大小、权限、归属等信息。

经过一番查找,由于忘记关掉ThinkPHPlogs功能,导致在网站的RunTime/Logs里面存在大量日志文件占掉了大把的空间,占了磁盘总大小40G中的23G,删除后服务器恢复正常。

标签: , ,   评论: 抢沙发 

ThinkPHP3.2.3查询多次JOIN同一张表的处理

当前位置:首页 » MySQL
In 笔记  @2018-05-09

问题:

在项目开发中遇到问题,要查询的一张主表post中有两个字段都关联了user表的id,需要取出useruser_name字段,那么应该怎么查询呢?

解决:

$posts_list = M()
    ->table('gc_post P')
    ->join('gc_user U ON P.author_id=U.id')
    ->join('gc_user U_M ON P.mentor_id=U_M.id')
    ->field('P.id, P.title, U.user_name as author_name, U_M.user_name as mentor_name,')
    ->order('P.gc_order desc')
    ->select();

这里是在ThinkPHP3.2.3下开发,给一张表取不同的别名,多次JOIN查询就可以正常取到数据了。

标签: , , ,   评论: 抢沙发 

MySQL通配符使用

当前位置:首页 » MySQL
In 笔记  @2016-08-02

MySQLlike查询的时候使用到通配符:

%:替代一个或多个字符;
_:仅替代一个字符;
[charlist]:字符列charlist中的任何单一字符;
[^charlist] 或者 [!charlist]:不在字符列charlist中的任何单一字符;

实例

%er表示以·er·结尾的任意字符;
ak%表示以ak开头的任意字符;
%通配的字符长度不限;
_则表示的是一个字符;
[ABT]%表示以A或者B货这T开头的任意长度字符;
%[^UTB]表示结尾不包括U和T和B的字符串。
标签: ,   评论: 4枚