今天执行如下指令时遇到了报错:

1
2
3
4
5
6
➜  setup git:(master) ✗ docker cp ./data/ moegirl-db:/tmp/
Successfully copied 542MB to moegirl-db:/tmp/
➜ setup git:(master) ✗ docker exec -it moegirl-db ls /tmp/data
enmoegirl.sql wikidata.sql
➜ setup git:(master) ✗ docker exec -it moegirl-db mysql -u root -D wikidata < /tmp/data/wikidata.sql
zsh: no such file or directory: /tmp/data/wikidata.sql

我把文件复制到了容器内,文件也确实在容器内,但是执行导入指令时却报错找不到文件。

您猜怎么着?

这是因为我的系统 shell 是 zsh,而 zsh 中的 < 被解释为重定向……

修复方法是明确使用 bash:

1
2
3
4
5
docker cp ./data/ moegirl-db:/tmp/
# ↓ here
bash -c "docker exec -it moegirl-db mysql -u root -D enmoegirl < /tmp/data/enmoegirl.sql"
bash -c "docker exec -it moegirl-db mysql -u root -D wikidata < /tmp/data/wikidata.sql"
docker exec -it moegirl-db rm -rf /tmp/data

这个蠢问题困扰了我一个小时,啊米诺斯!