我从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"
它按预期工作。
我做错了什么?
答案 0 :(得分:90)
我找到答案:--defaults-extra-file
必须是第一个选项。这按预期工作:
...\right_path\mysqldump --defaults-extra-file=d:\1.cnf
--add-drop-database --databases my_database_name
答案 1 :(得分:1)
我意识到这是特定于Linux的,但我的搜索将我带到了这里。
我正在使用bitnami的LAMP堆栈,并发现他们的“mysqldump”实际上是一个脚本:
LD_LIBRARY_PATH=/opt/lampstack-5.5.3-0/mysql/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
case "$@" in
*--no-defaults*)
exec $0.bin "$@"
exit
esac
exec $0.bin --defaults-file=/opt/lampstack-5.5.3-0/mysql/my.cnf "$@"
似乎不允许传递--defaults-file
...并且正常工作(根据此处接受的答案)。
答案 2 :(得分:1)
供以后参考:
接受的答案是正确的,必须将scale_x_continuous(breaks = scales::pretty_breaks(n = 10),limits=c(-1,290))
选项放在第一个位置。
要与容器一起尝试,一种选择是:
--defaults-extra-file
别忘了确保凭据安全且不使用VCS:
$ 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;"
该文件可以包含所有连接参数(主机,用户等)。
不幸的是,此文件不能包含数据库名称,这对于每个环境具有不同的文件来说真是太棒了。 现在,在命令中设置的文件名和数据库名称中,所有用于连接的内容都可以使用。
答案 3 :(得分:0)
也遇到这个问题。发现还有另一种情况可能导致--defaults-extra-file
选项无法识别。
在脚本中更改IFS时,可能会遇到此问题。解决方法是在执行mysql语句之前重置IFS。
供参考。