【问题标题】:OSX Sierra /usr/bin/env: ‘mysqldump’: No such file or directoryOSX Sierra /usr/bin/env: ‘mysqldump’: 没有这样的文件或目录
【发布时间】:2018-07-10 07:36:33
【问题描述】:

运行调用 mysqdump 以导入数据库的 shell script 时遇到问题。这是为了将 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

阅读 env: mysql: No such file or directory after `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 作为这个脚本的一部分?

【问题讨论】:

    标签: mysql wordpress macos unix wp-cli


    【解决方案1】:

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

    【讨论】:

    • env 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
    • 尝试启动dtruss ./sync-production.sh(dtruss 应该是 Mac OS X 的 strace 替代品 - 抱歉,我不是 Mac OS X 用户)。但在我看来,没有在脚本中指定 shell 可能会出现问题...尝试在 sync-production.sh 脚本的第一行添加 #!/bin/bash 并再次运行它
    • dtruss ./sync-production.sh dtrace: system integrity protection is on, some features will not be available dtrace: failed to execute ./sync-production.sh: dtrace cannot control executables signed with restricted entitlements 还添加了 shebang 部分并运行了它。但没有帮助。不知道是不是大小... 18MB ..
    • 你在用 sudo 运行 dtruss 吗?我的意思是:sudo dtruss ./sync-production.sh;或者尝试this 禁用保护;脚本本身的大小?
    • sudo dtruss ./sync-production.sh Password: dtrace: system integrity protection is on, some features will not be available dtrace: failed to execute ./sync-production.sh: dtrace cannot control executables signed with restricted entitlements 我的意思是 18MB 用于 .sql 文件,是的
    【解决方案2】:

    远程服务器确实(不再)安装了 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'.
    .........
    

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 1970-01-01
      • 2011-04-08
      • 2013-03-11
      • 2019-12-11
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多