我从Windows命令行运行以下命令来备份我的数据库:
...\right_path\mysqldump --add-drop-database --databases my_database_name
--defaults-extra-file=d:\1.cnf其中,d:\1.cnf包含以下内容:
[client]
user="my_user"
password="my_password"不幸的是,我得到了以下错误消息:
mysqldump: unknown variable 'defaults-extra-file=d:\1.cnf'如果我这样做了:
...\right_path\mysqldump --add-drop-database --databases my_database_name
--user="my_user" --password="my_password"它的工作方式与预期一致。
我做错了什么?
发布于 2010-10-01 12:06:04
我找到了答案:--defaults-extra-file必须是第一个选项。它的工作方式与预期一致:
...\right_path\mysqldump --defaults-extra-file=d:\1.cnf
--add-drop-database --databases my_database_name发布于 2018-09-18 15:05:39
也会遇到这个问题。发现还有另一种情况会导致无法识别--defaults-extra-file选项。
当您在脚本中更改IFS时,可能会遇到此问题。解决方案是在执行mysql语句之前重置IFS。
以供参考。
发布于 2020-06-13 22:09:44
供将来参考:
可接受的答案是正确的,需要将--defaults-extra-file选项放在第一个位置。
要在容器中试用它,一个选项是:
$ docker network create dbnet
$ docker run --network dbnet -it --rm \
--name db -e MYSQL_ROOT_PASSWORD=example \
mysql echo "[client]\npassword=example\n">.mydbcreds.cnf
$ docker run --network dbnet -it --rm \
--name db-client -v "$PWD:/app/" mysql \
mysql --defaults-extra-file=/app/.mydbcreds.cnf \
--host db --user root \
-e "SHOW SCHEMAS;"不要忘记将凭据放在安全的VCS之外:
echo ".mydbcreds.cnf">>.gitignore该文件可以包含所有连接参数(主机、用户等)。
不幸的是,这个文件不能包含数据库名称,如果每个环境都有一个不同的文件,那就太棒了。现在,我们在文件中设置了all for connection,并在命令中设置了DB name。
https://stackoverflow.com/questions/3836214
复制相似问题