解决 Mysql 报错 (Errcode: 28 – No space left on device)

解决 Mysql 报错 (Errcode: 28 – No space left on device)

报错详细

环境

Linux

报错内容

Mysql 启动报错

(Errcode: 28 – No space left on device)

Pdo 连接数据库报错

ERROR: SQLSTATE[HY000]: General error: 1 Can’t create/write to file ‘/tmp/#sql_cb5_0.MYI’ (Errcode: 28 – No space left on device)

解决

常见解决思路

根据错误原因,可以判断磁盘没空间。使用 df -h 确认磁盘空间是否满了,使用 du -sh /* 逐级确认目录大小,找到占用空间的文件删除之

不寻常解决方法

使用 df -h 命令看,磁盘并没有满

[...]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                     435G   91G  322G  22% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/mapper/ddf1_4c53492020202020808627c3000000004711471100001450p1
                      93M   71M   18M  81% /boot

这种情况下,基本确认是 inode 满了,使用 df -ih 确认

[...]# df -ih
Filesystem           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_mvb2000-lv_root
                      3.2M  3.2M     0    100% /
tmpfs                  2.0M     3  2.0M    1% /dev/shm
/dev/sda1              126K    41  125K    1% /boot
/dev/mapper/vg_mvb2000-lv_home
                       32M   951   32M    1% /home

解决思路

  • 先确定是什么导致 inode 占满
for i in /*; do echo $i; find $i | wc -l; done

分析出目录下文件的个数

  • 找到文件数最多的目录,调整目录继续执行上面的命令,例如:
for i in /var/*; do echo $i; find $i | wc -l; done

多数是 /var/spool 目录下小文件太多占用导致的。我这边最终确认的是在 /var/spool/clientmqueue/ 下

  • 删除小文件,直接使用 rm -rf * 是不行的
cd /var/spool/clientmqueue/
find . -name "*" | xargs rm -rf 

总结

导致该问题出现,大概率是定时任务输出没重定向导致的,命令后面加上 > /dev/null 2>&1 将输出定义到黑洞上即可

微信小程序踩坑记录

微信小程序踩坑记录

1、微信小程序上时间、日期显示为null、NaN问题

该问题只会在真机上出现,微信开发者工具不会出现,连接开发者工具做真机调试也不会出现该问题。

说重点:该问题的最终原因为,时间格式”2019-04-24 17:28:45″在 IOS上面会被认为是一个非法的格式,所以导致计算结果显示为null、NaN:NaNd 等。

解决办法:”2019/04/24 17:28:45″ 这种格式,IOS上是合法的,自行替换(sreplace(/-/g, ‘/’))或者生成该种格式数据

2、wx.navigateTo 页面栈最多十层 问题

小程序目前体系,功能稍微多一点的应用必须定义 tabBar,否则使用wx.navigateTo 跳转就会遇到跳不动的问题,爆栈溢了。wx.redirectTo 只能用在否则特殊不需要回退的页面

3、小程序使用 wx.openLocation 打开内置地图坐标体系

该功能用于根据经纬度在地图上标点,导航非常有用,唯一需要注意的是坐标体系使用的是 gcj02 坐标体系,需做转换

Composer 使用中国镜像,加快下载速度

Composer 使用中国镜像,加快下载速度

先说重点,不推荐使用“ Packagist / Composer中国全量镜像 ”,该镜像中间抽风过几次,现在已处于无人维护状态

这里推荐使用:Laravel China 维护的 Composer 中国全量镜像

镜像地址:https://packagist.laravel-china.org/

推荐使用全局配置:

composer config -g repo.packagist composer https://packagist.laravel-china.org

不建议在单独的项目定义镜像地址,实际使用过程中,很不可控

已有项目如何迁移到使用 Laravel China 维护的镜像

已有项目,Composer 包已然安装完毕,“ composer.lock ”文件记录的都是原有镜像地址,如果不更改过来,执行“composer install”依然是走的原有镜像地址,龟速或者下载失败

刷新 “composer.lock ” 命令:

composer update --lock

完了,清空本地缓存

composer clear-cache

Composer 更新指定包

Composer 更新指定包

例如”maatwebsite/excel“从2更新到3

网上一堆说法是”composer update maatwebsite/excel “,没啥卵用,原因如下:

composer update 会遵守 composer.json 中的版本约定,并不会跨大的版本号更新。

正确答案:

composer require maatwebsite/excel

package 存在就更新 ,不存在就安装

Linux 指定以 daemon 用户执行命令

Linux 指定以 daemon 用户执行命令

如题,想当然使用 su daemon -c “ls”,其实不然,会提示 daemon 用户不是一个登录用户:“This account is currently not available.”。因为 daemon 用户的 sbin 指定的是”/sbin/nologin“

正确命令如下:

su daemon -s /bin/bash -c “ls”

加上”-s /bin/bash“指定一下用户的 shell 环境即可

Google浏览器(Google Chrome)离线安装包

Google浏览器(Google Chrome)离线安装包

具体方法见:下载Google浏览器(Google Chrome)离线安装包方法

这里只更新网盘安装包

网盘链接: https://pan.baidu.com/s/19Xk6Zlq7b5pG-oEUvWW9hw 提取码: jen9

更新日期:2019-03-11

版本:Chrome 72.0.3626.121


 重要提示:

Chrome 官方自版本49以后放弃了对 Windows XP 和 Windows Vista 的支持,上面的安装包不支持这两个操作系统。要么选择更新系统,要么选择使用国产双核浏览器(例如:360浏览器、QQ浏览器)

国产浏览器里面推荐使用:360 安全浏览器,适合小白用户使用,下载链接:http://urlqh.cn/mCcEX

安装mysql-server时没有密码

安装mysql-server时没有密码

Ubuntu 安装 mysql-server,完了,没提示输入密码,直接重新设置密码

sudo mysqld_safe --skip-grant-tables&
sudo mysql --user=root mysql
mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;
quit
sudo service mysql restart
sudo mysql -u root -p
exit

需注意的是,非 root 账号直接入输入 mysql -u root -p 是无论如何连不上数据库的