0%

好久没用家里电脑的环境了,今天通过php写入数据库时出现了这个错误SQLSTATE[HY000]: General error: 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist,一开始还以为是代码或者配置的问题,网上搜索后才知道是mysql版本升级或者降级后数据库表权限需要更新,执行下面的指令就可以恢复:

1
2
3
mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql_upgrade -u root -p

笔记本新装了个SSD,总共有两个SSD和一个机械硬盘,第一块SSD是自带的win10,于是在新SSD上装个Fedora,用于各种折腾,跟Win10组双系统。此处记录Fedora安装和使用过程中遇到的问题。

阅读全文 »

1.使用root用户登陆container,解决方法来自stackoverflowdocker 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
2
3
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/path/to/openssl/.openssl/lib/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status

打算直接修改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
2
3
-0      Change xargs to expect NUL (``\0'') characters as separators,
instead of spaces and newlines. This is expected to be used in
concert with the -print0 function in find(1).
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
2
3
npm config set user 0
npm config set unsafe-perm true
npm install hexo-cli -g

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
2
3
#!/bin/bash
all=$@
docker exec -i hexo bash -c "cd /path/to/hexo;hexo $all"

hexo使用的container 名字是 hexo, 通过一个all来传递所有参数,是因为直接在 -c后面用 $@时,多参数只能收到第一个参数,采用了个变通的方法。使用时,直接在桌面运行 hexo param就可以了。
大功告成,用此docker完成本文。