0

运行调用 mysqdump 以导入数据库的shell 脚本时出现问题。这是为了将 WordPress 数据库从生产环境导入本地开发机器。它在过去有效。但是在我本地运行 OSX Sierra 的 MacOs Mac Mini 上肯定发生了一些变化。这是脚本:

# sync-prod.sh
read -r -p "Do you solemnly swear that you have had fewer than 2 alcoholic beverages in the last hour and that you would really like to reset your development database and pull the latest from production? [y/N] " response
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
then
    wp @development db reset --yes
    wp @production db export - > sql-dump-production.sql
    wp @development db import sql-dump-production.sql
    wp @development search-replace https://example.com http://example.test
else
    exit 0
fi

当我运行它时,我得到:

./sync-production.sh
Do you solemnly swear that you have had fewer than 2 alcoholic beverages in the last hour and that you would really like to reset your development database and pull the latest from production? [y/N] y
Success: Database reset.
/usr/bin/env: ‘mysqldump’: No such file or directory
Success: Imported from 'sql-dump-production.sql'.
Error: The site you have requested is not installed.

当我运行 mysqldump

jasper@~/webdesign/example.com/site $ which mysqldump
/usr/local/bin/mysqldump

从终端开始正常:

$ mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

阅读环境:mysql:在`wp import`之后没有这样的文件或目录并尝试调整$ PATH,现在有了

echo $PATH
/usr/local/sbin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/Users/jasper/.rvm/gems/ruby-2.3.3/bin:/Users/jasper/.rvm/gems/ruby-2.3.3@global/bin:/Users/jasper/.rvm/rubies/ruby-2.3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/jasper/.composer/vendor/bin:/usr/local/bin:/Users/jasper/.rvm/bin:/Users/jasper/.composer/vendor/bin:/usr/local/bin:/usr/local/mysql/bin:/Users/jasper/.composer/vendor/bin:/usr/local/bin:/usr/local/bin/mysql:/Users/jasper/.composer/vendor/bin:/usr/local/bin:/usr/local/bin/mysql:/Users/jasper/.composer/vendor/bin:/usr/local/bin:/usr/local/bin/mysql:/Users/jasper/.composer/vendor/bin:/usr/local/bin:/usr/local/bin/mysql

在 .bash_profile 我有

alias ll='ls -lGaf'
export PATH="/usr/local/sbin:$PATH"
export PATH="$PATH:$HOME/.composer/vendor/bin"
export PATH=$PATH:/usr/local/bin
export PATH=$PATH:/usr/local/bin/mysql
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

###-tns-completion-start-###
if [ -f /Users/jasper/.tnsrc ]; then
    source /Users/jasper/.tnsrc
fi
###-tns-completion-end-###
export PS1="\u@\w $ "

当我运行时,wp @production db check事情确实连接并且很好。我还可以使用 SequelPro 使用相同的用户名和密码通过 ssh 连接到数据库。任何想法为什么我仍然没有这样的文件或目录来运行 mysql 作为该脚本的一部分?

4

2 回答 2

1

env mysqldump在 shell 中运行命令时会发生什么?例如,您可以安装和使用strace并运行脚本或只是失败的命令,例如strace -F <command>. 也许您会透露有关此错误的更多详细信息。

于 2018-01-31T09:16:48.027 回答
0

远程服务器确实(不再)安装了 mysql-client。一旦我这样做了,apt install mariadb-client-10事情又开始工作了:

wp @production db export sql-dump-production.sql
Success: Exported to 'sql-dump-production.sql'.

我也可以运行:

./sync-production.sh
Do you solemnly swear that you have had fewer than 2 alcoholic beverages in the last hour and that you would really like to reset your development database and pull the latest from production? [y/N] y
Success: Database reset.
Success: Imported from 'sql-dump-production.sql'.
.........
于 2018-01-31T14:36:36.200 回答