好久没用家里电脑的环境了,今天通过php写入数据库时出现了这个错误SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist,一开始还以为是代码或者配置的问题,网上搜索后才知道是mysql版本升级或者降级后数据库表权限需要更新,执行下面的指令就可以恢复:
1 | mysql -u root -p |
好久没用家里电脑的环境了,今天通过php写入数据库时出现了这个错误SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist,一开始还以为是代码或者配置的问题,网上搜索后才知道是mysql版本升级或者降级后数据库表权限需要更新,执行下面的指令就可以恢复:
1 | mysql -u root -p |
笔记本新装了个SSD,总共有两个SSD和一个机械硬盘,第一块SSD是自带的win10,于是在新SSD上装个Fedora,用于各种折腾,跟Win10组双系统。此处记录Fedora安装和使用过程中遇到的问题。
1.使用root用户登陆container,解决方法来自stackoverflow。docker exec -u 0 -it mycontainer bash
电驴链接经过 www.verycd.com => www.verycd.gdajie.com 的转换后,就可以找到下载链接。
redis-incr在非事务情况下会返回修改后的新值,在事务中返回空数组。
1.sql语句select * from db_table where field != 12;,当field值为null时,查不到该结果,sql语句需要修改为select * from db_table where field != 12 or field is null;
自定义编译nginx时,出现了如下报错
1 | relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC |
打算直接修改Makefile文件时,找到了askubuntu,新的解决方法,尝试之后,编译通过,在这里记录解决方法。
在nginx目录下的 auto/options 文件中找到这么一行
1 | --with-openssl-opt=*) OPENSSL_OPT="$value" ;; |
修改为如下样式
1 | --with-openssl-opt=*) OPENSSL_OPT="$value -fPIC" ;; |
可能因为版本不同,我找到的跟链接例子中的不大一样,但是可以解决编译错误。
多文件使用xargs操作时,经常会出现带空格的文件名,而有文件找不到的错误提示。在 stackoverflow上找到两种解决方法。在此贴上。
1.使用换行符(\n)作为分隔符
1 | ls *mp3 | xargs -d '\n' mplayer |
2.跟find连用时
1 | -0 Change xargs to expect NUL (``\0'') characters as separators, |
1 | find . -name "*.mp3" -print0 | xargs -0 mplayer |
很早想在docker上部署hexo,但是一直没(tai)时(lan)间(le)。终于抽空部署上来,问题多多,记录一下。
1.手动拉取 nodejs 镜像 docker pull node:latest,个人喜好,后面创建镜像的时候可以节省时间。顺便提一下,使用daocloud,拉取速度提升了1到2个数量级。
2.安装hexo,npm install -g hexo-cli,这一句就直接给我搞了个没有权限的报错。貌似是npm的一个bug,google到了解决方法如下。
1 | npm config set user 0 |
3.因为已经有现成的hexo工程,并没有把工程安装写在Dockerfile中,而是进入container完成工程的重新部署。Dockerfile只是安装环境和部分软件。就不传了。
4.全自动部署,当然是需要docker-compose了。但是使用compose运行时,提示nodejs exited with code 0,而直接用Dockerfile却可以正常运行,参考这个stackoverflow得到了解决方法。在docker-compose.yml文件增加一行tty: true,可以实现后台运行。
5.由于桌面端没装nodejs(本来就是不想装,才用的docker),无法运行hexo命令。在虚拟机里运行的话,每次要敲一大堆的命令。但是桌面上装上的话,又背离了使用docker的初衷。所以,还是用脚本来解决吧。在/usr/bin 下面增加一个文件,内容如下。
1 | #!/bin/bash |
hexo使用的container 名字是 hexo, 通过一个all来传递所有参数,是因为直接在 -c后面用 $@时,多参数只能收到第一个参数,采用了个变通的方法。使用时,直接在桌面运行 hexo param就可以了。
大功告成,用此docker完成本文。
搭建了本地gogs,看看使用情况,gogs自签证书只需要一个指令,就顺便加上了https,结果
1 | git config --global http.sslVerify false |